Pavel Bucek's Weblog

  • November 21, 2014

Tyrus 1.9

Long time no see! After a while (longer than anticipated, sorry about that), we cut off Tyrus 1.9 release. Not much changed in the code since last release, but we were able to squeeze in some stability updates and performance improvements. I’ll highlight some of the features or fixes in next paragraphs:

What’s new?

Petr worked on new feature tracked as TYRUS-289 – Debug mode. Now you can enable more verbose logging on server, which would start logging data like handshake request and response, application and endpoint configuration and information about sessions and even messages, if you want. This could be useful for answering questions like “Why I cannot access my websocket endpoint?!” and so on.

Ondřej spent some time playing with debugger and found out few code paths, which were improved. Namely instantiating default (stateless) encoders and decoders per endpoint, which will save some memory and unnecessary calls to message localization code.

Another topic worth mentioning is that we fixed (again) client runtime on Android, so if you are looking (or already using) Tyrus client on Dalvik/Art, you should be able to update to 1.9.

Complete list of resolved JIRA tickets is below. As always, if you have any feedback, please use our mailing list users@tyrus.java.net or create a new bug or enhancement request  at https://java.net/jira/browse/TYRUS/. You can also use stackoverflow – in that case, please use tag “tyrus“.

Complete list of changes

  • [TYRUS-285] – Improve broadcast by sending from multiple (configurable) threads.
  • [TYRUS-289] – DEBUG mode (client/server)
  • [TYRUS-307] – Revise ignored tests
  • [TYRUS-342] – Tyrus throw CancellationException
  • [TYRUS-355] – HTTP Redirect – Location header cannot be a relative address
  • [TYRUS-361] – JVM does not exits if shared transport is enabled
  • [TYRUS-365] – Broadcast messages are not included in the monitoring statistics
  • [TYRUS-366] – master branch not buildable with JDK 1.6
  • [TYRUS-368] – Instantiate default encoders and decoders once per endpoint
  • [TYRUS-369] – Format localized messages when necessary
  • [TYRUS-370] – Masking key is generated on server side
  • [TYRUS-371]– Introduce an option for using custom masking key generator.
  • [TYRUS-375] – Buffer overflow during HTTP Response size parsing (jdk client container)
  • [TYRUS-376] – Investigate how/whether is ScheduledExecutorService terminated when session is closed (related to heart beat feature)
  • [TYRUS-379] – Autobahn testcases 7.3.4 & 7.3.5 fail in close stage
  • [TYRUS-380] – setContextClassLoader throws “access denied” exception in JNLP client app
  • [TYRUS-381] – exception message error
  • [TYRUS-382] – onError parameter exception is wrapped in InvocationTargetException when an exception is thrown from programmatic endpoint (onOpen or onClose)
  • [TYRUS-383] – session.getRequestParameterMap does not contain query parameters when running on Grizzly standalone server
  • [TYRUS-385] – Session idle timeout concurrency issues
  • [TYRUS-386] – Dalvik class loader rejects TyrusEnpointWrapper
  • [TYRUS-387] – Unable to use Tyrus in android appllication

Join the discussion

Comments ( 2 )
  • guest Sunday, January 4, 2015

    Tyrus 1.9, 1000 Client connection:

    Exception in thread " tyrus-jdk-client-15" java.lang.NullPointerException

    at org.glassfish.tyrus.container.jdk.client.TransportFilter$4.completed(TransportFilter.java:283)

    at org.glassfish.tyrus.container.jdk.client.TransportFilter$4.completed(TransportFilter.java:274)

    at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)

    at sun.nio.ch.Invoker$2.run(Invoker.java:218)

    at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

    at java.lang.Thread.run(Thread.java:745)

  • Pavel Monday, January 5, 2015

    It would be nice to include some testcase or more details next time :-) anyway, I will commit the fix for this today, it seems like some race condition during jdk client connection close phase.

Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.