Firefly is an asynchronous web framework for rapid development of high-performance web application.

Overview

What is Firefly?

Build Status Maven Central License

Firefly framework is an asynchronous Java web framework. It helps you create a web application Easy and Quickly. It provides asynchronous HTTP, Websocket, TCP Server/Client, and many other useful components for developing web applications, protocol servers, etc. That means you can easy deploy your web without any other java web containers, in short, it's containerless. Using Kotlin coroutines, Firefly is truly asynchronous and highly scalable. It taps into the fullest potential of hardware. Use the power of non-blocking development without the callback nightmare.

Firefly core provides functionality for things like:

  • HTTP server and client
  • WebSocket server and client
  • HTTP, Socks proxy
  • HTTP Gateway
  • TCP server and client
  • UDP server and client

Event driven

The Firefly APIs are largely event-driven. It means that when things happen in Firefly that you are interested in, Firefly will call you by sending you events.

Some example events are:

  • some data has arrived on a socket
  • an HTTP server has received a request

Firefly handles a lot of concurrencies using just a small number of threads, so don't block Firefly thread, you must manage blocking call in the standalone thread pool.

With a conventional blocking API the calling thread might block when:

  • Thread.sleep()
  • Waiting on a Lock
  • Waiting on a mutex or monitor
  • Doing a long-lived database operation and waiting for a result
  • Call blocking I/O APIs

In all the above cases, when your thread is waiting for a result it can’t do anything else - it’s effectively useless.

It means that if you want a lot of concurrencies using blocking APIs, then you need a lot of threads to prevent your application grinding to a halt.

Threads have overhead regarding the memory they require (e.g. for their stack) and in context switching.

For the levels of concurrency required in many modern applications, a blocking approach just doesn’t scale.

Quick start

Add maven dependency in your pom.xml.

<dependencics>
    <dependency>
        <groupId>com.fireflysource</groupId>
        <artifactId>firefly</artifactId>
        <version>5.0.0-alpha10</version>
    </dependency>

    <dependency>
        <groupId>com.fireflysource</groupId>
        <artifactId>firefly-slf4j</artifactId>
        <version>5.0.0-alpha10</version>
    </dependency>
</dependencics>

Add log configuration file "firefly-log.xml" to the classpath.

<?xml version="1.0" encoding="UTF-8"?>
<loggers xmlns="http://www.fireflysource.com/loggers"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.fireflysource.com/loggers http://www.fireflysource.com/loggers.xsd">
    <logger>
        <name>firefly-system</name>
        <level>INFO</level>
        <path>logs</path>
    </logger>
</loggers>

HTTP server and client example:

fun main() {
    `$`.httpServer()
        .router().get("/").handler { ctx -> ctx.end("Hello http! ") }
        .listen("localhost", 8090)

    `$`.httpClient().get("http://localhost:8090/").submit()
        .thenAccept { response -> println(response.stringBody) }
}

WebSocket server and client example:

fun main() {
    `$`.httpServer().websocket("/websocket/hello")
        .onServerMessageAsync { frame, _ -> onMessage(frame) }
        .onAcceptAsync { connection -> sendMessage("Server", connection) }
        .listen("localhost", 8090)

    val url = "ws://localhost:8090"
    `$`.httpClient().websocket("$url/websocket/hello")
        .onClientMessageAsync { frame, _ -> onMessage(frame) }
        .connectAsync { connection -> sendMessage("Client", connection) }
}

private suspend fun sendMessage(data: String, connection: WebSocketConnection) = connection.useAwait {
    (1..10).forEach {
        connection.sendText("WebSocket ${data}. count: $it, time: ${Date()}")
        delay(1000)
    }
}

private fun onMessage(frame: Frame) {
    if (frame is TextFrame) {
        println(frame.payloadAsUTF8)
    }
}

TCP server and client example:

fun main() {
    `$`.tcpServer().onAcceptAsync { connection ->
        launch { writeLoop("Server", connection) }
        launch { readLoop(connection) }
    }.listen("localhost", 8090)

    `$`.tcpClient().connectAsync("localhost", 8090) { connection ->
        launch { writeLoop("Client", connection) }
        launch { readLoop(connection) }
    }
}

private suspend fun readLoop(connection: TcpConnection) = connection.useAwait {
    while (true) {
        try {
            val buffer = connection.read().await()
            println(BufferUtils.toString(buffer))
        } catch (e: Exception) {
            println("Connection closed.")
            break
        }
    }
}

private suspend fun writeLoop(data: String, connection: TcpConnection) = connection.useAwait {
    (1..10).forEach {
        connection.write(toBuffer("TCP ${data}. count: $it, time: ${Date()}"))
        delay(1000)
    }
}

Contact information

Comments
  • 为firefly执行mvn install命令报错

    为firefly执行mvn install命令报错


    Test set: test.http.TestMultipartParser

    Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec <<< FAILURE! testMultipartParser(test.http.TestMultipartParser) Time elapsed: 0 sec <<< ERROR! java.lang.NullPointerException at test.http.TestMultipartParser.testMultipartParser(TestMultipartParser.java:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)

    opened by zidafone 3
  • Bump jackson.version from 2.9.7 to 2.10.0

    Bump jackson.version from 2.9.7 to 2.10.0

    Bumps jackson.version from 2.9.7 to 2.10.0.

    Updates jackson-databind from 2.9.7 to 2.10.0

    Commits

    Updates jackson-core from 2.9.7 to 2.10.0

    Commits
    • 2ce8890 [maven-release-plugin] prepare release jackson-core-2.10.0
    • 0e59212 Prepare for 2.10.0
    • e8c9f22 Merge branch '2.9' into 2.10
    • 4899c28 [maven-release-plugin] prepare for next development iteration
    • d4bfe20 [maven-release-plugin] prepare release jackson-core-2.9.10
    • b17e3f1 Prepare for 2.9.10
    • fc73bee Fix #563 (async parser, location for array values)
    • ce70782 Start work on #563
    • 1c852df ...
    • 8a0df82 Minor test change
    • Additional commits viewable in compare view

    Updates jackson-annotations from 2.9.7 to 2.10.0

    Commits

    Updates jackson-dataformat-yaml from 2.9.7 to 2.10.0

    Commits
    • 653a521 [maven-release-plugin] prepare release jackson-dataformats-text-2.10.0
    • c867e7c Prepare for 2.10.0
    • a2108d6 Merge branch '2.9' into 2.10
    • c925161 [maven-release-plugin] prepare for next development iteration
    • 75c139c [maven-release-plugin] prepare release jackson-dataformats-text-2.9.10
    • 38a70b4 prepare for 2.9.10
    • f4a9b24 ...
    • 9b66b14 [maven-release-plugin] prepare for next development iteration
    • 28aeb99 [maven-release-plugin] prepare release jackson-dataformats-text-2.10.0.pr3
    • b762986 prepare for 2.10.0.pr3
    • Additional commits viewable in compare view

    Updates jackson-dataformat-xml from 2.9.7 to 2.10.0

    Commits
    • 3734729 [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.0
    • cc495ab Prepare for 2.10.0
    • b5ae1e8 Fix #325
    • 2bc25e4 Merge branch '2.9' into 2.10
    • 944835d [maven-release-plugin] prepare for next development iteration
    • 2a65f5f [maven-release-plugin] prepare release jackson-dataformat-xml-2.9.10
    • 75e9608 preapre for 2.9.10
    • b40a078 ...
    • 7d9ff0c [maven-release-plugin] prepare for next development iteration
    • 63d7c3e [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.0.pr3
    • Additional commits viewable in compare view

    Updates jackson-dataformat-ion from 2.9.7 to 2.10.0

    Commits

    Updates jackson-dataformat-protobuf from 2.9.7 to 2.10.0

    Commits
    • ef604bd [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.0
    • 4effd61 Prepare for 2.10.0
    • 44e63ed Merge branch '2.9' into 2.10
    • e476326 [maven-release-plugin] prepare for next development iteration
    • 4269350 [maven-release-plugin] prepare release jackson-dataformats-binary-2.9.10
    • e2d638c ...
    • a752141 prepare for 2.9.10
    • 57f33c9 ...
    • da96681 [maven-release-plugin] prepare for next development iteration
    • 2212be7 [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.0.pr3
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 2
  • Bump jackson-databind from 2.13.4 to 2.13.4.1

    Bump jackson-databind from 2.13.4 to 2.13.4.1

    Bumps jackson-databind from 2.13.4 to 2.13.4.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Artifact mismatch from documentation

    Artifact mismatch from documentation

    The current readme has:

    <dependency>
        <groupId>com.fireflysource</groupId>
        <artifactId>firefly</artifactId>
        <version>5.0.2</version>
    </dependency>
    

    however, the artifact is not available in Maven Central, only 5.0.0-dev6 is the latest available.

    opened by rrmcguinness 1
  • Bump jackson-databind from 2.13.1 to 2.13.2.1

    Bump jackson-databind from 2.13.1 to 2.13.2.1

    Bumps jackson-databind from 2.13.1 to 2.13.2.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump jackson.version from 2.9.7 to 2.11.0

    Bump jackson.version from 2.9.7 to 2.11.0

    Bumps jackson.version from 2.9.7 to 2.11.0. Updates jackson-databind from 2.9.7 to 2.11.0

    Commits

    Updates jackson-core from 2.9.7 to 2.11.0

    Commits

    Updates jackson-annotations from 2.9.7 to 2.11.0

    Commits

    Updates jackson-dataformat-yaml from 2.9.7 to 2.11.0

    Commits

    Updates jackson-dataformat-xml from 2.9.7 to 2.11.0

    Commits
    • 6178408 [maven-release-plugin] prepare release jackson-dataformat-xml-2.11.0
    • 97c9e58 minor javadoc fixes
    • cc3f54d Prepare for 2.11.0 release
    • 54ac0ab Merge branch '2.10' into 2.11
    • 0d09d17 Upgrade woodstox dep to 6.2.0
    • efa8e3a ...
    • 5e14644 [maven-release-plugin] prepare for next development iteration
    • ba745ba [maven-release-plugin] prepare release jackson-dataformat-xml-2.11.0.rc1
    • 05faf56 prepare for 2.11.0.rc1
    • f886eda move to 2.11.0.rc1-SNAPSHOT
    • Additional commits viewable in compare view

    Updates jackson-dataformat-ion from 2.9.7 to 2.11.0

    Commits

    Updates jackson-dataformat-protobuf from 2.9.7 to 2.11.0

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump jackson.version from 2.9.7 to 2.10.3

    Bump jackson.version from 2.9.7 to 2.10.3

    Bumps jackson.version from 2.9.7 to 2.10.3.

    Updates jackson-databind from 2.9.7 to 2.10.3

    Commits

    Updates jackson-core from 2.9.7 to 2.10.3

    Commits
    • 7cf88c8 [maven-release-plugin] prepare release jackson-core-2.10.3
    • d71a09c Prepare for 2.10.3
    • 18819b1 Backport #603 fix, update release notes
    • b2be2c4 minor add to dataformat match test
    • 18c5398 Update release notes wrt #592 fix
    • e9998bf Fix NPE in DataFormatMatcher#getMatchedFormatName when no match exists (#591)
    • dc9c40c move to 2.10.3-SNAPSHOT deps
    • 8f6d905 [maven-release-plugin] prepare for next development iteration
    • 35541ca [maven-release-plugin] prepare release jackson-core-2.10.2
    • ef009f0 Merge branch '2.10' of github.com:FasterXML/jackson-core into 2.10
    • Additional commits viewable in compare view

    Updates jackson-annotations from 2.9.7 to 2.10.3

    Commits

    Updates jackson-dataformat-yaml from 2.9.7 to 2.10.3

    Commits
    • 2effbce [maven-release-plugin] prepare release jackson-dataformats-text-2.10.3
    • 2e190ea Prepare for 2.10.3 release
    • 000c860 back to snapshots
    • 0660110 [maven-release-plugin] prepare for next development iteration
    • e6cf4f9 [maven-release-plugin] prepare release jackson-dataformats-text-2.10.2
    • 745847f prepare for 2.10.2
    • 3d8ed0d ...
    • 3a839ce Fix #163
    • 65a0693 Adding failing test for #163
    • 26c5b56 warnings, javadoc cleanup
    • Additional commits viewable in compare view

    Updates jackson-dataformat-xml from 2.9.7 to 2.10.3

    Commits
    • 21869b4 [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.3
    • 60443a7 prepare for 2.10.3 release
    • 4cdf2e9 Update Woodstox dependency to 6.1.1
    • dcb7451 ...
    • bb793ed [maven-release-plugin] prepare for next development iteration
    • 28ee8a5 [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.2
    • 083eaba Prepare for 2.10.2 release
    • f45aefc Fix #366
    • c2fe22f Refactoring test
    • 4f5fb6b Fix #378
    • Additional commits viewable in compare view

    Updates jackson-dataformat-ion from 2.9.7 to 2.10.3

    Commits

    Updates jackson-dataformat-protobuf from 2.9.7 to 2.10.3

    Commits
    • f90cd22 [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.3
    • 82c1080 Prepare for 2.10.3 release
    • 94f69e4 ...
    • 794b8d6 [maven-release-plugin] prepare for next development iteration
    • 5470ac0 [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.2
    • 7e4672f prepare for 2.10.2
    • bc79f9d Update release notes
    • 5f4ec0e Allow IonWriters to be reused.
    • 312fc6a ...
    • 7d1cfa2 [maven-release-plugin] prepare for next development iteration
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump jackson.version from 2.9.7 to 2.10.1

    Bump jackson.version from 2.9.7 to 2.10.1

    Bumps jackson.version from 2.9.7 to 2.10.1.

    Updates jackson-databind from 2.9.7 to 2.10.1

    Commits

    Updates jackson-core from 2.9.7 to 2.10.1

    Commits

    Updates jackson-annotations from 2.9.7 to 2.10.1

    Commits

    Updates jackson-dataformat-yaml from 2.9.7 to 2.10.1

    Commits
    • 773ceee [maven-release-plugin] prepare release jackson-dataformats-text-2.10.1
    • edd6d5c prepare for 2.10.1
    • d39071a Git one last test failure wrt #15 on 2.x
    • 32437c0 Fix #15: Implement CsvParser.Feature.SKIP_EMPTY_LINES
    • 4eff590 Remove unnecessary method override
    • 571170d Clean up: remove unneeded csv override, remove call to deprecated JavaPropsPa...
    • 077432c ...
    • bcf53dc add 2.10 javadocs
    • e785fce [maven-release-plugin] prepare for next development iteration
    • 653a521 [maven-release-plugin] prepare release jackson-dataformats-text-2.10.0
    • Additional commits viewable in compare view

    Updates jackson-dataformat-xml from 2.9.7 to 2.10.1

    Commits
    • 5db5ec2 [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.1
    • 1d8fb77 prepare for 2.10.1
    • ad85f0b Refactor backported failing test for #366
    • 521b8df Add test for xsi:nil hierarchy bug (#366)
    • 2778e1f update parent pom ref
    • a3a5fec Update woodstox dep to 6.0.2
    • 8d18b78 Add some more failing tests (#318 and #319)
    • 85823f4 Move now passing #325 to proper place
    • e1e8414 Add javadocs for 2.10
    • b099856 [maven-release-plugin] prepare for next development iteration
    • Additional commits viewable in compare view

    Updates jackson-dataformat-ion from 2.9.7 to 2.10.1

    Commits

    Updates jackson-dataformat-protobuf from 2.9.7 to 2.10.1

    Commits
    • ff60ae5 [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.1
    • 4c53cec prepare for 2.10.1
    • dd79fab Fix #188 (actual fix in jackson-databind; tests for cbor however to verify)
    • 14ac5b2 Add failing tests for #188
    • 3487af1 One minor change needed for #185
    • 3fc5bb0 Merge branch '2.10' of https://github.com/FasterXML/jackson-dataformats-binar...
    • eafae59 fix #185 (possible stackoverflow decoding crafted nested tagged arrays)
    • 21f8159 fix travis settings
    • ccd0fc4 Add a failing test for #185
    • 148e93c Add javadocs for 2.10
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Http2 supported?

    Http2 supported?

    from https://github.com/http2/http2-spec/wiki/Implementations

    It was said firefly supports http/2 over TCP, i.e. h2c. is this true?

    when I looked at the source code, I did not see any http/2 related stuff, so I doubt it.

    jack

    opened by jackzhp 1
  • template file parse error

    template file parse error

    ...\page\template_compiled_view_bidding_pandect.java:10: 错误: 代码过长 public _bidding_pandect(TemplateFactory templateFactory){this.templateFactory = templateFactory;} ^ ...\page\template_compiled_view_bidding_pandect.java:8: 错误: 常量过多 public class _bidding_pandect extends AbstractView { ^ 2 个错误 com.firefly.template.exception.TemplateFileReadException: template file parse error at com.firefly.template.parser.ViewFileReader.(ViewFileReader.java:27) at com.firefly.template.TemplateFactory.init(TemplateFactory.java:53) at com.firefly.mvc.web.view.TemplateView.init(TemplateView.java:32) at com.firefly.server.ServerAnnotationWebContext.viewInit(ServerAnnotationWebContext.java:41) at com.firefly.server.ServerAnnotationWebContext.(ServerAnnotationWebContext.java:32) at com.firefly.server.ServerBootstrap.start(ServerBootstrap.java:38) ......

    opened by sojava-code 1
  • 偶尔会报java.nio.channels.CancelledKeyException

    偶尔会报java.nio.channels.CancelledKeyException

    $err_start java.nio.channels.CancelledKeyException at sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:55) at sun.nio.ch.SelectionKeyImpl.readyOps(SelectionKeyImpl.java:69) at com.firefly.net.tcp.TcpWorker.processSelectedKeys(TcpWorker.java:140) at com.firefly.net.tcp.TcpWorker.run(TcpWorker.java:103) at java.lang.Thread.run(Thread.java:662) $err_end

    opened by boomya 1
Releases(firefly-5.0.1)
  • firefly-5.0.1(Apr 18, 2022)

    Firefly v5.0.1 updates the Kotlin version to 1.6.20, Kotlin coroutine version to 1.6.1. Fix the jackson security vulnerabilities.

    Update log:

    1. Updates Kotlin version to 1.6.20.
    2. Updates Kotlin coroutine version to 1.6.1.
    3. Updates jackson data bind version to 2.13.2.2.
    Source code(tar.gz)
    Source code(zip)
  • firefly-5.0.0-final(Dec 23, 2021)

    Firefly v5.0.0 updates the Kotlin version to 1.6.10, Kotlin coroutine version to 1.6.0.

    Update log:

    1. Updates Kotlin version to 1.6.10.
    2. Updates Kotlin coroutine version to 1.6.0.
    Source code(tar.gz)
    Source code(zip)
  • firefly-5.0.0-alpha15(Dec 8, 2021)

  • firefly-5.0.0-alpha13(Jul 19, 2021)

    1. Update Kotlin version to 1.5.21
    2. Update dokka version to 1.5.0 and add dokka build config for jdk8 and jdk11
    3. Add read, write, close timeout parameter extension function for TcpConnection.
    4. Add JNI helper module
    Source code(tar.gz)
    Source code(zip)
  • firefly-5.0.0-alpha9(Feb 19, 2021)

  • firefly-5.0.0-alpha8(Feb 10, 2021)

  • firefly-5.0.0-alpha7_release(Feb 1, 2021)

    1. Refactor the net framework based on Kotlin coroutine.
    2. Optimize performance over 50%.
    3. The newest JDK is compatible. e.g. JDK15.
    4. A new API design that is scalable.
    Source code(tar.gz)
    Source code(zip)
  • firefly-4.9.5_release(Nov 23, 2018)

    Update log:

    1. Add time-based log file split configuration.
    2. Fix the JDBC connection thread safe problem.
    3. Remove ALPN boot dependency.
    4. Update Kotlin version to 1.3.10.
    Source code(tar.gz)
    Source code(zip)
  • firefly_4.9.3(Nov 10, 2018)

Owner
Alvin Qiu
I'm a developer, from China, focus network, and database technology. Enjoy table tennis. Pen-holder, Loop with quick-attack.
Alvin Qiu
CUBA Platform is a high level framework for enterprise applications development

Java RAD framework for enterprise web applications Website | Online Demo | Documentation | Guides | Forum CUBA Platform is a high level framework for

CUBA Platform 1.3k Jan 1, 2023
A web MVC action-based framework, on top of CDI, for fast and maintainable Java development.

A web MVC action-based framework, on top of CDI, for fast and maintainable Java development. Downloading For a quick start, you can use this snippet i

Caelum 347 Nov 15, 2022
The Grails Web Application Framework

Build Status Slack Signup Slack Signup Grails Grails is a framework used to build web applications with the Groovy programming language. The core fram

grails 2.7k Jan 5, 2023
Development Driven Testing (DDT) lets you generate unit tests from a running application. Reproduce a bug, generate a properly mocked test

DDTJ: It kills bugs DDT is the flip side of TDD (Test-driven development). It stands for "Development Driven Tests". Notice that it doesn’t contradict

null 4 Dec 30, 2021
Ninja is a full stack web framework for Java. Rock solid, fast and super productive.

_______ .___ _______ ____. _____ \ \ | |\ \ | | / _ \ / | \| |/ | \ | |/ /_\ \ / | \

Ninja Web Framework 1.9k Jan 5, 2023
Vaadin 6, 7, 8 is a Java framework for modern Java web applications.

Vaadin Framework Vaadin allows you to build modern web apps efficiently in plain Java, without touching low level web technologies. This repository co

Vaadin 1.7k Jan 5, 2023
The modular web framework for Java and Kotlin

∞ do more, more easily Jooby is a modern, performant and easy to use web framework for Java and Kotlin built on top of your favorite web server. Java:

jooby 1.5k Dec 16, 2022
Apache Wicket - Component-based Java web framework

What is Apache Wicket? Apache Wicket is an open source, java, component based, web application framework. With proper mark-up/logic separation, a POJO

The Apache Software Foundation 657 Dec 31, 2022
Micro Java Web Framework

Micro Java Web Framework It's an open source (Apache License) micro web framework in Java, with minimal dependencies and a quick learning curve. The g

Pippo 769 Dec 19, 2022
True Object-Oriented Java Web Framework

Project architect: @paulodamaso Takes is a true object-oriented and immutable Java8 web development framework. Its key benefits, comparing to all othe

Yegor Bugayenko 748 Dec 23, 2022
ZK is a highly productive Java framework for building amazing enterprise web and mobile applications

ZK ZK is a highly productive Java framework for building amazing enterprise web and mobile applications. Resources Documentation Tutorial ZK Essential

ZK 375 Dec 23, 2022
jetbrick web mvc framework

jetbrick-webmvc Web MVC framework for jetbrick. Documentation http://subchen.github.io/jetbrick-webmvc/ Dependency <dependency> <groupId>com.githu

Guoqiang Chen 25 Nov 15, 2022
A simple expressive web framework for java. Spark has a kotlin DSL https://github.com/perwendel/spark-kotlin

Spark - a tiny web framework for Java 8 Spark 2.9.3 is out!! Changeset <dependency> <groupId>com.sparkjava</groupId> <artifactId>spark-core</a

Per Wendel 9.4k Dec 29, 2022
🚀 The best rbac web framework. base on Spring Boot 2.4、 Spring Cloud 2020、 OAuth2 . Thx Give a star

?? The best rbac web framework. base on Spring Boot 2.4、 Spring Cloud 2020、 OAuth2 . Thx Give a star

pig-mesh 4.3k Jan 8, 2023
A server-state reactive Java web framework for building real-time user interfaces and UI components.

RSP About Maven Code examples HTTP requests routing HTML markup Java DSL Page state model Single-page application Navigation bar URL path UI Component

Vadim Vashkevich 33 Jul 13, 2022
Javalin - A simple web framework for Java and Kotlin

Javalin is a very lightweight web framework for Kotlin and Java which supports WebSockets, HTTP2 and async requests. Javalin’s main goals are simplicity, a great developer experience, and first class interoperability between Kotlin and Java.

David (javalin.io) 6.2k Jan 6, 2023
An evolving set of open source web components for building mobile and desktop web applications in modern browsers.

Vaadin components Vaadin components is an evolving set of high-quality user interface web components commonly needed in modern mobile and desktop busi

Vaadin 519 Dec 31, 2022
crnk.io - Crank up the development of RESTful applications

crnk.io - Crank up the development of RESTful applications! release on jcenter latest in private repository What is Crnk? Crnk is an implementation of

null 272 Nov 28, 2022