Fibers and actors for web development

Related tags

Networking comsat
Overview

COMSAT
Scalable, Concurrent Web Apps

Build Status Dependency Status Version License License

Getting started

Add the following Maven/Gradle dependencies:

Feature Artifact
Servlet integration for defining fiber-per-request servlets. co.paralleluniverse:comsat-servlet:0.7.0
A fiber-blocking Clojure Ring adapter based on Jetty 9.3. co.paralleluniverse:comsat-ring-jetty9:0.7.0
HTTP Kit-based fiber-blocking HTTP client. co.paralleluniverse:comsat-httpkit:0.7.0
Jersey server integration for defining REST services. co.paralleluniverse:comsat-jersey-server:0.7.0
Dropwizard integration including Jersey, ApacheHttpClient and JDBI. co.paralleluniverse:comsat-dropwizard:0.7.0
Spring Framework Web MVC fiber-blocking controller methods integration. co.paralleluniverse:comsat-spring-webmvc:0.7.0
Spring Boot auto-configuration support for Web MVC controllers. co.paralleluniverse:comsat-spring-boot:0.7.0
Spring Security configuration support for fibers. co.paralleluniverse:comsat-spring-security:0.7.0
JAX-RS client integration for HTTP calls with fibers. co.paralleluniverse:comsat-jax-rs-client:0.7.0
ApacheHttpClient integration for HTTP calls with fibers. co.paralleluniverse:comsat-httpclient:0.7.0
Retrofit integration with fibers. co.paralleluniverse:comsat-retrofit:0.7.0
JDBI integration with fibers. co.paralleluniverse:comsat-jdbi:0.7.0
JDBC integration with fibers. co.paralleluniverse:comsat-jdbc:0.7.0
jOOQ integration with fibers. co.paralleluniverse:comsat-jooq:0.7.0
MongoDB fiber-blocking integration for the Allanbank API. co.paralleluniverse:comsat-mongodb-allanbank:0.7.0
OkHttp HTTP+SPDY client integration. co.paralleluniverse:comsat-okhttp:0.7.0
The Web Actors API. co.paralleluniverse:comsat-actors-api:0.7.0
Deploy HTTP, SSE and WebSocket Web Actors as Undertow handlers. co.paralleluniverse:comsat-actors-undertow:0.7.0
Deploy HTTP, SSE and WebSocket Web Actors as Netty handlers. co.paralleluniverse:comsat-actors-netty:0.7.0
Deploy HTTP, SSE and WebSocket Web Actors in J2EE 7 Servlet and WebSocket (JSR-356) embedded and standalone containers. co.paralleluniverse:comsat-actors-servlet:0.7.0
Use Comsat in the Tomcat servlet container without the java agent. co.paralleluniverse:comsat-tomcat-loader:0.7.0[:jdk8] (for JDK 8 optionally add the jdk8 classifier)
Use Comsat in the Jetty servlet container without the java agent. co.paralleluniverse:comsat-jetty-loader:0.7.0[:jdk8] (for JDK 8 optionally add the jdk8 classifier)
Spring Framework Web integration allows using fiber-blocking controllers. co.paralleluniverse:comsat-spring-web:0.7.0
Apache Kafka producer integration module. co.paralleluniverse:comsat-kafka:0.7.0
Apache Shiro realms integration module. co.paralleluniverse:comsat-shiro:0.7.0

Or, build and install from sources (after installing Gradle locally) in your local maven repository with:

gradle install

The full testsuite can be run with gradle build.

Usage

A Gradle template project and a Maven archetype using various integration modules and featuring setup with both Dropwizard and standalone Tomcat are also available for jumpstart and study. Both have a without-comsat branch which is useful to clearly see the (minimal, if any) porting effort required (branches comparison works very well for this purporse).

There's a Comsat-Ring Clojure Leiningen template as well which includes an auto-instrument branch that doesn't need any explicit suspendable-marking code (suspendable!, defsfn, sfn etc.) thanks to Pulsar's new auto-instrumentation feature.

You can also have a look at additional examples.

Finally there are several regularly updated third-party bootstrap projects: Comsat + Dropwizard + jOOQ, Comsat Web Actors Stock Quotes (ported from Akka), Spring MVC + Tomcat standalone servlet container.

Getting help

Questions and suggestions are welcome at this forum/mailing list.

Contributions (including Pull Requests)

Please have a look at some brief information for contributors.

License

COMSAT is free software published under the following license:

Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved.

This program and the accompanying materials are dual-licensed under
either the terms of the Eclipse Public License v1.0 as published by
the Eclipse Foundation

  or (per the licensee's choosing)

under the terms of the GNU Lesser General Public License version 3.0
as published by the Free Software Foundation.
Comments
  • Injectable WebActors - Undertow

    Injectable WebActors - Undertow

    Hi, I'd appreciate any comments on these changes as to whether this is heading in the right direction of not. The main issue was that objects (namely the ContextProvider and Context implementations) cannot be instantiated in their respective constructors anymore as the default constructor is called too soon when the ProvidersWrapper field is not yet set. I saw it fit to separate the classes into different files to better manage the hierarchical complexity, hope that's OK.

    enhancement 
    opened by roded 13
  • HttpMessage header name case normalization

    HttpMessage header name case normalization

    https://github.com/puniverse/comsat/pull/66

    I seem to have forgot HttpRequest.Builder last time. Do tell if I missed anything. (why is this not automatically mergeable though?)

    bug 
    opened by roded 9
  • Exception in Fiber

    Exception in Fiber "fiber-10000001" co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '**') or call-sites (marked '!!') detected on the call stack:

    QUASAR WARNING: Assertions enabled. This may harm performance. QUASAR WARNING: Quasar Java Agent isn't running. If you're using another instrumentation method you can ignore this message; otherwise, please refer to the Getting Started section in the Quasar documentation. QUASAR WARNING: Fibers are set to verify instrumentation. This may severely harm performance. Exception in Fiber "fiber-10000001" co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '') or call-sites (marked '!!') detected on the call stack: at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8) at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0) at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6) at co.paralleluniverse.fibers.Stack.popMethod (Stack.java:155 bci: 11) at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:152 bci: 327) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run (AsyncHttpReq.java:26 bci: 1) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute (FiberHttpClient.java:96 bci: 14) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:226 bci: 5) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:208 bci: 8) ** at com.flhx.core.util.httpClient.HttpClientUtils.get (HttpClientUtils.java:63 bci: 146) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:39 bci: 2) (optimized) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:35 bci: 1) (optimized) at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11) at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1) at co.paralleluniverse.fibers.Fiber.checkInstrumentation(Fiber.java:1664) at co.paralleluniverse.fibers.Fiber.checkInstrumentation(Fiber.java:1613) at co.paralleluniverse.fibers.Fiber.verifySuspend(Fiber.java:1586) at co.paralleluniverse.fibers.Stack.popMethod(Stack.java:155) at co.paralleluniverse.fibers.FiberAsync.run(FiberAsync.java:152) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run(AsyncHttpReq.java:26) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute(FiberHttpClient.java:96) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute(FiberHttpClient.java:226) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute(FiberHttpClient.java:208) at com.flhx.core.util.httpClient.HttpClientUtils.get(HttpClientUtils.java:63) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run(QuasarIncreasingEchoTest.java:39) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run(QuasarIncreasingEchoTest.java:35) at co.paralleluniverse.fibers.Fiber.run(Fiber.java:1019) Exception in Fiber "fiber-10000001" co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '') or call-sites (marked '!!') detected on the call stack: at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8) at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0) at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6) at co.paralleluniverse.fibers.Stack.popMethod (Stack.java:155 bci: 11) at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:152 bci: 327) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run (AsyncHttpReq.java:26 bci: 1) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute (FiberHttpClient.java:96 bci: 14) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:226 bci: 5) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:208 bci: 8) ** at com.flhx.core.util.httpClient.HttpClientUtils.get (HttpClientUtils.java:63 bci: 146) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:39 bci: 2) (optimized) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:35 bci: 1) (optimized) at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11) at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1) at co.paralleluniverse.fibers.Fiber.checkInstrumentation(Fiber.java:1664) at co.paralleluniverse.fibers.Fiber.checkInstrumentation(Fiber.java:1613) at co.paralleluniverse.fibers.Fiber.verifySuspend(Fiber.java:1586) at co.paralleluniverse.fibers.Stack.popMethod(Stack.java:155) at co.paralleluniverse.fibers.FiberAsync.run(FiberAsync.java:152) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run(AsyncHttpReq.java:26) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute(FiberHttpClient.java:96) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute(FiberHttpClient.java:226) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute(FiberHttpClient.java:208) at com.flhx.core.util.httpClient.HttpClientUtils.get(HttpClientUtils.java:63) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run(QuasarIncreasingEchoTest.java:39) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run(QuasarIncreasingEchoTest.java:35) at co.paralleluniverse.fibers.Fiber.run(Fiber.java:1019)

    co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '') or call-sites (marked '!!') detected on the call stack: at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8) at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0) at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6) at co.paralleluniverse.fibers.Stack.popMethod (Stack.java:155 bci: 11) at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:152 bci: 327) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run (AsyncHttpReq.java:26 bci: 1) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute (FiberHttpClient.java:96 bci: 14) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:226 bci: 5) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:208 bci: 8) ** at com.flhx.core.util.httpClient.HttpClientUtils.get (HttpClientUtils.java:63 bci: 146) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:39 bci: 2) (optimized) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:35 bci: 1) (optimized) at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11) at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1) java.util.concurrent.ExecutionException: co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '') or call-sites (marked '!!') detected on the call stack: at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8) at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0) at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6) at co.paralleluniverse.fibers.Stack.popMethod (Stack.java:155 bci: 11) at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:152 bci: 327) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run (AsyncHttpReq.java:26 bci: 1) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute (FiberHttpClient.java:96 bci: 14) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:226 bci: 5) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:208 bci: 8) ** at com.flhx.core.util.httpClient.HttpClientUtils.get (HttpClientUtils.java:63 bci: 146) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:39 bci: 2) (optimized) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:35 bci: 1) (optimized) at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11) at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1) at co.paralleluniverse.fibers.Fiber.get(Fiber.java:1304) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest.httpTest(QuasarIncreasingEchoTest.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:64) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:106) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '*') or call-sites (marked '!!') detected on the call stack: at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8) at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0) at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6) at co.paralleluniverse.fibers.Stack.popMethod (Stack.java:155 bci: 11) at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:152 bci: 327) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run (AsyncHttpReq.java:26 bci: 1) * at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute (FiberHttpClient.java:96 bci: 14) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:226 bci: 5) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:208 bci: 8) ** at com.flhx.core.util.httpClient.HttpClientUtils.get (HttpClientUtils.java:63 bci: 146) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:39 bci: 2) (optimized) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:35 bci: 1) (optimized) at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11) at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1) at co.paralleluniverse.fibers.Fiber.checkInstrumentation(Fiber.java:1664) at co.paralleluniverse.fibers.Fiber.checkInstrumentation(Fiber.java:1613) at co.paralleluniverse.fibers.Fiber.verifySuspend(Fiber.java:1586) at co.paralleluniverse.fibers.Stack.popMethod(Stack.java:155) at co.paralleluniverse.fibers.FiberAsync.run(FiberAsync.java:152) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run(AsyncHttpReq.java:26) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute(FiberHttpClient.java:96) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute(FiberHttpClient.java:226) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute(FiberHttpClient.java:208) at com.flhx.core.util.httpClient.HttpClientUtils.get(HttpClientUtils.java:63) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run(QuasarIncreasingEchoTest.java:39) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run(QuasarIncreasingEchoTest.java:35) at co.paralleluniverse.fibers.Fiber.run(Fiber.java:1019) at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1014) at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:729) at co.paralleluniverse.fibers.FiberForkJoinScheduler$FiberForkJoinTask.exec1(FiberForkJoinScheduler.java:257) at co.paralleluniverse.concurrent.forkjoin.ParkableForkJoinTask.doExec(ParkableForkJoinTask.java:116) at co.paralleluniverse.concurrent.forkjoin.ParkableForkJoinTask.exec(ParkableForkJoinTask.java:73) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:902) at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1689) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1644) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

    Running test: Test httpTest(com.flhx.test.quasarTest.QuasarIncreasingEchoTest) Failed test httpTest [com.flhx.test.quasarTest.QuasarIncreasingEchoTest] with exception: java.util.concurrent.ExecutionException: co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '') or call-sites (marked '!!') detected on the call stack: at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8) at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0) at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6) at co.paralleluniverse.fibers.Stack.popMethod (Stack.java:155 bci: 11) at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:152 bci: 327) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run (AsyncHttpReq.java:26 bci: 1) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute (FiberHttpClient.java:96 bci: 14) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:226 bci: 5) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:208 bci: 8) ** at com.flhx.core.util.httpClient.HttpClientUtils.get (HttpClientUtils.java:63 bci: 146) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:39 bci: 2) (optimized) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:35 bci: 1) (optimized) at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11) at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1) java.util.concurrent.ExecutionException: co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '') or call-sites (marked '!!') detected on the call stack: at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8) at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0) at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6) at co.paralleluniverse.fibers.Stack.popMethod (Stack.java:155 bci: 11) at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:152 bci: 327) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run (AsyncHttpReq.java:26 bci: 1) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute (FiberHttpClient.java:96 bci: 14) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:226 bci: 5) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:208 bci: 8) ** at com.flhx.core.util.httpClient.HttpClientUtils.get (HttpClientUtils.java:63 bci: 146) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:39 bci: 2) (optimized) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:35 bci: 1) (optimized) at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11) at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1) at co.paralleluniverse.fibers.Fiber.get(Fiber.java:1304) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest.httpTest(QuasarIncreasingEchoTest.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:64) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:106) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: co.paralleluniverse.fibers.VerifyInstrumentationException: Uninstrumented methods (marked '*') or call-sites (marked '!!') detected on the call stack: at co.paralleluniverse.common.util.ExtendedStackTrace.here (ExtendedStackTrace.java:44 bci: 8) at co.paralleluniverse.fibers.Fiber.checkInstrumentation (Fiber.java:1613 bci: 0) at co.paralleluniverse.fibers.Fiber.verifySuspend (Fiber.java:1586 bci: 6) at co.paralleluniverse.fibers.Stack.popMethod (Stack.java:155 bci: 11) at co.paralleluniverse.fibers.FiberAsync.run (FiberAsync.java:152 bci: 327) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run (AsyncHttpReq.java:26 bci: 1) * at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute (FiberHttpClient.java:96 bci: 14) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:226 bci: 5) ** at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute (FiberHttpClient.java:208 bci: 8) ** at com.flhx.core.util.httpClient.HttpClientUtils.get (HttpClientUtils.java:63 bci: 146) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:39 bci: 2) (optimized) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run (QuasarIncreasingEchoTest.java:35 bci: 1) (optimized) at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1019 bci: 11) at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1014 bci: 1) at co.paralleluniverse.fibers.Fiber.checkInstrumentation(Fiber.java:1664) at co.paralleluniverse.fibers.Fiber.checkInstrumentation(Fiber.java:1613) at co.paralleluniverse.fibers.Fiber.verifySuspend(Fiber.java:1586) at co.paralleluniverse.fibers.Stack.popMethod(Stack.java:155) at co.paralleluniverse.fibers.FiberAsync.run(FiberAsync.java:152) at co.paralleluniverse.fibers.httpclient.AsyncHttpReq.run(AsyncHttpReq.java:26) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.doExecute(FiberHttpClient.java:96) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute(FiberHttpClient.java:226) at co.paralleluniverse.fibers.httpclient.FiberHttpClient.execute(FiberHttpClient.java:208) at com.flhx.core.util.httpClient.HttpClientUtils.get(HttpClientUtils.java:63) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run(QuasarIncreasingEchoTest.java:39) at com.flhx.test.quasarTest.QuasarIncreasingEchoTest$1.run(QuasarIncreasingEchoTest.java:35) at co.paralleluniverse.fibers.Fiber.run(Fiber.java:1019) at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1014) at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:729) at co.paralleluniverse.fibers.FiberForkJoinScheduler$FiberForkJoinTask.exec1(FiberForkJoinScheduler.java:257) at co.paralleluniverse.concurrent.forkjoin.ParkableForkJoinTask.doExec(ParkableForkJoinTask.java:116) at co.paralleluniverse.concurrent.forkjoin.ParkableForkJoinTask.exec(ParkableForkJoinTask.java:73) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:902) at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1689) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1644) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) com.flhx.test.quasarTest.QuasarIncreasingEchoTest > httpTest FAILED java.util.concurrent.ExecutionException at QuasarIncreasingEchoTest.java:47 Caused by: co.paralleluniverse.fibers.VerifyInstrumentationException Running test: Test test(com.flhx.test.quasarTest.QuasarIncreasingEchoTest)

    opened by maoxianfly 9
  • [webactors] Provide mean to access underlying servlet request (or other implementation)

    [webactors] Provide mean to access underlying servlet request (or other implementation)

    Hi,

    When receiving an HttpRequest with a WebActor, it is not possible to access the underlying HttpServletRequest (or at least I didn't find a way to do so :) if we are sure the actor is running on a servlet. My personal need is to be able to access the current HttpSession (because it contains authentication information). Well, I actually need the HttpServletRequest itself because I'm using a library that needs it to access the session as well as the request parameters.

    I was expecting to be able to simply cast it to ServletHttpRequest and access the request parameter but the class is not visible and the parameter not accessible.

    Would it be possible to change that situation? I guess this must be well thought since you may not want to expose too much of the internal APIs, but if you have a clear idea of how to do that, I can provide a PR :)

    Thanks!

    opened by victornoel 7
  • HttpChannel calls unsupported close() on 400-600 HTTP codes

    HttpChannel calls unsupported close() on 400-600 HTTP codes

    Hi, Seems like HttpChannel is calling its close() on HTTP errors (400-600) and redirects. This seems to make it impossible to return HTTP errors without an UnsupportedOperationException. Or is there something I missed?

    bug 
    opened by roded 7
  • Add fiber implementation for Kafka producer client

    Add fiber implementation for Kafka producer client

    I was playing around with Comsat and Quasar this weekend to checkout the current state of development.

    I wanted to to try an implementation, and created (what I think) is a working implementation of the Kafka producer. I started on a consumer implementation, but the current release Kafka "newer" consumer is unstable and the interface will change noticeably in the next release. So I thought I would hold off on that.

    I thought I would submit this pull request in case this functionality of interest.

    opened by Tim-Brooks 6
  • comsat-mongodb-allanbanks

    comsat-mongodb-allanbanks

    Hi!

    I implemented a mongodb integration module for comsat based on http://www.allanbank.com/mongodb-async-driver/index.html version 2.0 and a fairly complete essential testsuite for it based on Embed MongoDB https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo ; I think you might be interested in main comsat inclusion.

    The module takes a subclassing approach, so existing code based on the driver should require minimal to no code changes. The overridden methods from the original driver are just the blocking and future ones in order to make them fiber-blocking. The fiber-blocking overrides are implemented by bridging the async, callback-based corresponding methods in the original driver through Quasar's FiberAsync.

    I can think of further TODOs both for driver and tests but I think inclusion could be possible already (the 99 JUnit tests covering the overridden methods run all ok here); you can find those ideas in the classes' JavaDocs comments, but shortly:

    • Test non-async suspendable methods (already declared in "suspendables"); anyway some are already used as part of test setup
    • Test ListenableFuture functionality
    • Add new fiber-blocking APIs for now async-only operations (with lock-in disadvantage for code starting to use them)
    • Test new fiber-blocking APIs for now async-only operations

    Incidentally (and luckily), starting with version 2.0, the license for the basic driver functionality has changed to Apache 2.0 http://www.allanbank.com/mongodb-async-driver/license.html which, to the extent of my knowledge, allows for liberal use even in commercial projects (previously commercial use required a commercial licence, which I think was a more strict policy than comsat's). Maybe the author decided such a change because of 10gen's OSS driver starting to consider/implement an async interface in the 3.0.x branch https://github.com/mongodb/mongo-java-driver/tree/3.0.x/async-driver

    opened by circlespainter 6
  • Add missing Jersey suspendables for request and response filters

    Add missing Jersey suspendables for request and response filters

    As discussed on the mailing-list, here is a PR to add some suspendables in Jersey.

    I put all the commits I had a need for (in particular some ignore for Eclipse) but I can remove whichever you want and merge the last two if you prefer :)

    Also, in Eclipse, I had to add a compile dependency for quasar-core (in the global dependencies scope), because Eclipse wouldn't add it from the quasar configuration's one otherwise. I didn't commit that, but if you know of a clean way to fix that problem, I'm interested :)

    enhancement 
    opened by victornoel 5
  • AutoWebActorHandler filtered scan

    AutoWebActorHandler filtered scan

    AutoWebActorHandler currently scans the entire classpath for @WebActor annotated classes. In my case, this is a shame as there's a single @WebActor annotated class to be found.

    As I rather not lose the convenience of the AutoWebActorHandler, I'm wondering if it would be possible to allow the handler to accept a specific package name for scanning in order to save some of the loading time.

    enhancement 
    opened by roded 5
  • WebActor delegate to one or more actors and wait for response

    WebActor delegate to one or more actors and wait for response

    I have done a PoC for a project I'm considering using comsat. I have tried to use the Actors system, but there's not enough examples or documentation so I find myself trying to figure things up looking at existing classes, the comsat and quasar code and the examples.

    Sorry but I'm new to the Actors model paradigm (I knew about actors before, since I've programmed in Scala and I've read about Akka actors a while ago but I haven't really used them. I know they're inspired by Erlang Actors).

    Also I've read most of your blog posts in blog.paralleluniverse.co

    This is the issue:

    I have a WebActor, it receives HttpRequest messages fine and in the examples it uses this pattern

    HttpRequest msg = (HttpRequest) message;
    msg.getFrom().send(ok(self(), msg, body).build())
    

    this works fine, of course.

    The problem is that my WebActor delegates to one or many other actors (looking at the classes in Comsat I thought the appropriate in this case was that the other actors should be BehaviourActor, is that right?) which receive the WebDataMessage fine, perform the operations they need to perform and then use the msg.getFrom() technique to reply to the original WebActor.

    All that is fine, the WebActor receives the messages from the BehaviorActors, but then it needs to send a message with the HttpResponse to the virtual actor ServletActor. How can I do this if I've lost the original HttpRequest to do a .getFrom()? I've done it storing a reference to the HttpRequest in the WebActor like this

    private HttpRequest request;
    

    and then doing

    if (message instanceof WebDataMessage) {
        request.getFrom().send(ok(self(), request, ((WebDataMessage) message).getStringBody()).build());
    }
    

    but I don't think that is a good pattern, is it? There must be a better way...

    Also, without actors, if my servlet depends on multiple async calls I can always use java Futures to wait for all the async calls to fulfill and then return a combined response, but with actors, after sending a message to several BehaviorActors how can I send a combined response with the message from all of the BehaviorActors? What's the proper way to do it?

    question 
    opened by drkarl 5
  • WebActorInitializer should not assert on the presence of websockets

    WebActorInitializer should not assert on the presence of websockets

    Hi,

    For people using web actors without websockets, it is not needed to assert on the presence of websockets in a servlet container, actually, it is a problem if one does not want to enable them!

    Maybe the check should be done only in case the @WebActor annotation has web socket url patterns?

    enhancement 
    opened by victornoel 4
Releases(v0.7.0)
  • v0.7.0(Apr 6, 2016)

    New integrations

    The comsat-shiro module contributed by @roded (thanks!) through #53 allows custom implementations of Shiro Realms to perform fiber-blocking calls when invoked by fibers (see the docs for details).

    Improvements

    • Many dependencies have been upgraded both in the Java and Clojure modules.
    • Other minor improvements, some from the community (like @andreiursan's https://github.com/puniverse/comsat/commit/57cff6665ec16c6c9cd8f6178fc5478c9aecffda, thanks!)

    Closed issues

    • #44
    • #50
    • #54
    • comsat-actors-undertow and comsat-actors-netty support for concurrent requests within the same session has been made safer and more configurable.
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Feb 10, 2016)

    New integration modules

    comsat-kafka provides a Kafka Producer with an asynchronous send method that will return a Quasar SettableFuture. A SettableFuture can block fibers in addition to threads. Contributed by Tim Brooks. Thanks!

    Improvements

    • comsat-actors-undertow, comsat-actors-netty and comsat-servlet have been performance-optimized and allow more tuning (see the docs for more details).
    • Many dependencies have been upgraded both in the Java and Clojure modules.

    Breaking changes

    The WebHandler.Context interfaces in comsat-actors-undertow and comsat-actors-netty have changed to allow greater control and optimization. They are used only when selecting request-serving web actor instances manually with the Undertow and Netty backends (rather than by scanning the classpath for @WebActor annotations). See the docs for more details.

    Closed issues

    • #49
    • #51
    • Fixed HTTP Web Actors watch in Web Actors backends and other minor fixes
    • Docs glitches
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Aug 28, 2015)

    New integration modules:

    • comsat-actors-undertow – Deploy HTTP, SSE and WebSocket Web Actors as Undertow handlers
    • comsat-actors-netty – Enables deploying HTTP, SSE and WebSocket Web Actors as Netty handlers.

    Benchmarks

    • #23

    Closed issues

    • #36
    • #38
    • Fix redirect handling for Tomcat servlet actors
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Jul 1, 2015)

    New integration modules:

    • comsat-okhttpOkHttp 2.4 HTTP/SPDY client integration.
    • comsat-httpkitHTTP Kit client integration (the http-kit client API is a subset of clj-http); thanks to Nir Rubinstein for his preliminary investigation and work on this one

    Breaking changes:

    • The FiberDBI(IDBI jdbi, ExecutorService es) constructor has been removed because JDBI is now a fully transparent integration on top of JDBC's and doesn't need an executor on its own: executors passed to other constructors will be used for the underlying JDBC integration

    Improvements:

    • comsat-dropwizard upgraded to the recently released Dropwizard 0.8.1.
    • comsat-spring-boot and the new comsat-spring-boot-security module introduce convenient configuration annotations, resp.FiberSpringBootApplication and FiberSecureSpringBootApplication.
    • comsat-spring upgraded to Spring Boot 1.2.4, Spring Framework 4.1.6 and Spring Security 4.0.1 (and more tests ported).
    • comsat-jooq has been improved and updated to jOOQ 3.6.2
    • comsat-jdbi has been improved and updated to JDBI 2.62
    • comsat-jdbc is now completely wrapped and fiber-blocking (see #27 below)
    • comsat-actors-servlet now includes an HTTP/SSE/WebSocket test with Undertow as well
    • Quasar and several other dependencies upgraded

    Closed issues:

    • #26
    • #27
    • #28
    • #29
    • Fixed an issue in comsat-spring that prevented controlled methods annotated to be suspendable, but not actually instrumented, from being still executed inside fibers.
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Dec 23, 2014)

    New integration modules:

    • comsat-spring-webmvcSpring Framework Web MVC fiber-blocking controller methods integration.
    • comsat-spring-bootSpring Boot auto-configuration support for Web MVC controllers.
    • comsat-spring-securitySpring Security configuration support for fibers.
    • comsat-ring-jetty9 – Clojure Ring fiber-blocking adapter based on Jetty 9.

    Breaking changes:

    • comsat-servlet is now fully aligned to the standard Servlet API and allows using @WebServlet annotations. To port code to the new version, remove throws SuspendExecution from fiber-blocking servlets and replace it with a @Suspendable annotation. Method bodies that throw SuspendExecution will compile after wrapping them with:
    try {
       // ... method body
    } catch(SuspendExecution e) {
       throw new AssertionError(); // shouldn't happen
    }
    

    Improvements:

    • comsat-loader-tomcat and comsat-loader-tomcat-jdk8 now work in standalone server mode too (verified with Tomcat 7.0.56 and 8.0.15).
    • comsat-servlet now dispatches exceptions back to a servlet container's thread where they are re-thrown, so they can be handled correctly and reach the client.
    • Several dependencies upgraded.
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Jul 23, 2014)

    New integration modules:

    • comsat-dropwizardDropwizard integration including Jersey, ApacheHttpClient and JDBI.
    • comsat-retrofitRetrofit integration.
    • comsat-jdbiJDBI integration for using the JDBI API in fibers.
    • comsat-jdbc – JDBC integration for using the JDBC API in fibers.
    • comsat-jooqjOOQ integration for using the jOOQ API in fibers.
    • comsat-mongodb-allanbank – MongoDB integration for using the allanbank API -- contributed by Fabio Tudone
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Mar 26, 2014)

SCG used as as proxy to connect gRPC-Web and back end gRPC services

gRPC-Web Spring Cloud Gateway Spring Cloud Gateway 3.1.1 supports for gRPC and HTTP/2. It is possible to use Spring Cloud Gateway to connect gRPC-Web

null 1 Apr 4, 2022
Experimental Netty-based Java 16 application/web framework

Experimental Netty-based application/web framework. An example application can be seen here. Should I use this? Probably not! It's still incredibly ea

amy null 8 Feb 17, 2022
Unconventional Java code for building web servers / services without a framework.

Unconventional Java code for building web servers / services without a framework. Think dropwizard but as a seed project instead of a framework. If this project had a theme it would be break the rules but be mindful of your decisions.

StubbornJava 227 Nov 15, 2022
Microhttp - a fast, scalable, event-driven, self-contained Java web server

Microhttp is a fast, scalable, event-driven, self-contained Java web server that is small enough for a programmer to understand and reason about.

Elliot Barlas 450 Dec 23, 2022
Java library for representing, parsing and encoding URNs as in RFC2141 and RFC8141

urnlib Java library for representing, parsing and encoding URNs as specified in RFC 2141 and RFC 8141. The initial URN RFC 2141 of May 1997 was supers

SLUB 24 May 10, 2022
Pcap editing and replay tools for *NIX and Windows - Users please download source from

Tcpreplay Tcpreplay is a suite of GPLv3 licensed utilities for UNIX (and Win32 under Cygwin) operating systems for editing and replaying network traff

AppNeta, Inc. 956 Dec 30, 2022
Android application allowing to sniff and inject Zigbee, Mosart and Enhanced ShockBurst packets on a Samsung Galaxy S20

RadioSploit 1.0 This Android application allows to sniff and inject Zigbee, Mosart and Enhanced ShockBurst packets from a Samsung Galaxy S20 smartphon

Romain Cayre 52 Nov 1, 2022
Telegram API Client and Telegram BOT API Library and Framework in Pure java.

Javagram Telegram API Client and Telegram Bot API library and framework in pure Java. Hello Telegram You can use Javagram for both Telegram API Client

Java For Everything 3 Oct 17, 2021
An annotation-based Java library for creating Thrift serializable types and services.

Drift Drift is an easy-to-use, annotation-based Java library for creating Thrift clients and serializable types. The client library is similar to JAX-

null 225 Dec 24, 2022
ssh, scp and sftp for java

sshj - SSHv2 library for Java To get started, have a look at one of the examples. Hopefully you will find the API pleasant to work with :) Getting SSH

Jeroen van Erp 2.2k Jan 8, 2023
Efficient reliable UDP unicast, UDP multicast, and IPC message transport

Aeron Efficient reliable UDP unicast, UDP multicast, and IPC message transport. Java and C++ clients are available in this repository, and a .NET clie

Real Logic 6.3k Dec 27, 2022
LINE 4.1k Dec 31, 2022
Square’s meticulous HTTP client for the JVM, Android, and GraalVM.

OkHttp See the project website for documentation and APIs. HTTP is the way modern applications network. It’s how we exchange data & media. Doing HTTP

Square 43.4k Jan 9, 2023
A Java library for capturing, crafting, and sending packets.

Japanese Logos Pcap4J Pcap4J is a Java library for capturing, crafting and sending packets. Pcap4J wraps a native packet capture library (libpcap, Win

Kaito Yamada 1k Dec 30, 2022
Full-featured Socket.IO Client Library for Java, which is compatible with Socket.IO v1.0 and later.

Socket.IO-client Java This is the Socket.IO Client Library for Java, which is simply ported from the JavaScript client. See also: Android chat demo en

Socket.IO 5k Jan 4, 2023
Asynchronous Http and WebSocket Client library for Java

Async Http Client Follow @AsyncHttpClient on Twitter. The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and a

AsyncHttpClient 6k Dec 31, 2022
API gateway for REST and SOAP written in Java.

API gateway for REST and SOAP written in Java.

predic8 GmbH 389 Dec 31, 2022
BAIN Social is a Fully Decentralized Server/client system that utilizes Concepts pioneered by I2P, ToR, and PGP to create a system which bypasses singular hosts for data while keeping that data secure.

SYNOPSIS ---------------------------------------------------------------------------------------------------- Welcome to B.A.I.N - Barren's A.I. Natio

Barren A.I. Wolfsbane 14 Jan 11, 2022