Caucho Newsletter December 2019

main caucho logo 3caucho founding outer richmond

Our deployment has run on Caucho Resin for over a decade. Resin is reliable, stable and easy to maintain/upgrade. Our production sites are critical to our business and we don’t have downtime issues while running on Resin. Additionally, Caucho tech support is great. They use experienced engineers for support and we always get a fast response." 

                    - Stewart Morse | CEO | IBRC, Inc.
 

Newsletter at a glance

  • Resin 4.0.63 released
  • Spring WebSocket support via Maven plugin
  • ​Resin tip – cloud deployment made easy
  • Customer success story – Resin replaces Apache and improves performance​!

Resin 4.0.63 released

Resin 4.0.63 comes with numerous bug fixes. Notably, it resolves most JDK 11 compatibility issues and JDK6/7 regressions.

Here’s the change list for Resin 4.0.63 – released October 28, 2019

  • admin: added resin.admin.heap-dump.file system property for heap-dump directory
  • config: add health_log_expire_timeout
  • config: add openssl_chain_file to cluster-default.xml
  • dist: split out jpa-16.jar from javaee-16.jar
  • file: add default-content-type to FileServlet
  • hessian: close of Hessian proxy stream when result is inputstream
  • http: HttpProxy encoding issue with ch>0×8000
  • http: HttpsEmbed missing jsse.init()
  • jdk: use Map.keySet() instead of ConcurrentHashMap.keySet() for linking issues
  • jdk-compat: jdk init with -javaagent cannot use logging from appendToClassPathForInstrumentation
  • jdk-compat: TcpPort.close() exception on JDK6/7
  • jsp-el: issues with bean getters and get()
  • mod_caucho: handling of https forwarding
  • port: thread launchers were started before initialization
  • remote: allow JDK11 w/o WebService class
  • server: on HMUX requests, wait for server start
  • server: keepalive timeout needs to killKeepalive not turn to active
  • session: SessionImpl should not clear _isModified on no-change load

In case you missed it, here’s the change list for Resin 4.0.62 – released May 23, 2019

  • cloud: distributed server update issue with .git/refs
  • debian: update debian release
  • distribution: update .jar versions and remove jars with possible conflicts
  • ​elastic: add –elastic-server-index
  • elastic: cleanup of join server-id and server-address, and timeout
  • elastic: add server-timeout to resin:ElasticCloudService
  • embed: add HttpsEmbed
  • file: cache file updates when webapp-jar changes
  • integration: WebApp.getMimeMapping
  • integration: WebApp.getLocaleMapping
  • jmx: add application-hash to WebAppMXBean
  • quercus: find interface method if available
  • security: foo.;html produces 500 exception
  • security: j_security_check with no auth should issue warning and 404 instead of 500
  • security: setting setServerHeader to null will remove Server header
  • servlet: don’t reuse form/invocation ByteToChar when very large
  • spring: add ClasspathPath to MergePath.addClassPath
  • ssl: add trust-store-algorithm and trust-store-provider to jsse
  • ssl: add key-manager-password and key-store-password to jsse
  • ssl: add key-manager-algorithm and key-manager-provider to jsse
  • websocket: add WebSocketContext.ping

If you’d like to discuss updates or take advantage of new Resin features for your deployment, please email Alexandra Garmon, garmon@caucho.com, to arrange a web meeting with one of our engineers.

Resin Spring WebSocket support via Maven plugin

Resin now integrates with spring-websocket via a Maven plugin. The plugin provides a
ResinRequestUpgradeStrategy that is responsible for upgrading an HTTP request into a WebSocket connection for Spring. It works with both Spring 4.x and 5.x. To use it:

1. add Maven dependency

    <dependency>
        <groupId>com.caucho</groupId>
        <artifactId>spring4-websocket</artifactId>
        <version>4.0.63</version>
    </dependency>

2. set a HandshakeHandler that uses ResinRequestUpgradeStrategy:

    @Configuration
    @EnableWebSocket
    public class WebSocketConfig implements WebSocketConfigurer {
 
        @Override
        public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
            HandshakeHandler handshakeHandler = new DefaultHandshakeHandler(new ResinRequestUpgradeStrategy());
 
            registry.addHandler(myHandler(), "/myHandler").setHandshakeHandler(handshakeHandler);
        }
 
        ...
    }

Resin tip – cloud deployment made easy

Resin Pro makes it super easy to deploy your webapp to the entire cluster with just one command:

    $ resinctl deploy mywebapp.war

That’s it! With that command, Resin distributes the WAR to every server in the cluster and starts it
right up. No more manual copying of WARs. No more ssh’ing into each individual server.

Under the hood is a complex symphony that makes it all possible:

  1. 1. command uploads the webapp to a triad/hub server in your Resin configuration
  2. 2. triad server commits the webapp into its internal git repository for reliability
  3. 3. server unpacks and starts up the webapp
  4. 4. triad server distributes the webapp to other triad servers for redundancy
  5. 5. triad servers distribute the webapp to the rest of the servers in the cluster

Then to undeploy it:

    $ resinctl undeploy mywebapp.war

Customer success story – Resin solves web server performance and structural problems for Gyeonggi Provincial Office of Education

Xest Information Technology, our South Korea Premier Partner and VAR successfully worked with Gyeonggi Provincial Office of Education to solve Apache performance problems.

Problems

  • Apache’s low performance made the homepage vulnerable to overloading
  • Service slowed down with as little as about 200 concurrent users
  • In the AIX OS environment, Apache and Resin were linked as proxy passes, resulting in reduced performance

Solutions

  • Replace Apache with Resin web server
  • Configure the file server separately

Results

  • After Resin web server replaced Apache, the issues that slowed down the simultaneous connection immediately disappeared and performance significantly improved.
  • The result of using Resin is that Gyeonggi’s services achieve fast performance and stability to meet user demands for information.
  • ​Since Gyeonggi migrated to Resin, they have not experienced any issues or slowdowns. Their services run fast, smooth and without user complaints.

“Our homepage was often down because of the low performance of Apache which is vulnerable to overloading. Resin solved this problem for us with its fast performance and full compatibility. I’m now very proud that no complaints have been made since we migrated to Resin.”
- Gyeonggi Provincial Office of Education, Computerized Officer S.Y.Kang

http://caucho.com/products/resin/download Download the latest version of Resin today!

paradise-beach.jpg