main website home
  • About this blog

    This blog features updates, opinions, and technical notes from Caucho engineers about Caucho products, the enterprise Java industry, and PHP. Caucho Technology is the creator of the Resin Application Server and the Quercus PHP in Java engine. A leader in Java performance since 1998, Caucho is a Sun JavaEE licensee with over 9000 customers worldwide.
  • Tags

    ajaxworld bam candi cdi cloud cluster comet configuration deploy devoxx eclipse ejb embedded flash flex google app engine hessian hmtp ioc java ee 6 javaone javazone jms messaging newsletter nyjug osgi php pomegranate quercus resin resin 4.0 REST servlet sfjug silicon valley code camp spring testing training tssjs watchdog webbeans web profile websockets wordpress
  • Meta

    • Register
    • Log in
    • Entries RSS
    • Comments RSS
    • WordPress.org

Resin on Raspberry Pi — JEE comes to the $35 ARM platform!

February 15th, 2013 by Paul Cowan

I’m happy to announce, with the release of Resin 4.0.35, Resin will compile and run on a Raspberry Pi!

For the uninitiated, Raspberry Pi is a credit-card-sized single-board computer, very popular amongst tinkerers and hobbyists for it’s ease of use and low cost.

We’ve made number of changes in recent releases to allow Resin to run on a Raspberry Pi. These included both Java fixes and compilation of Resin’s native libraries. Both Resin Pro and Resin GPL Servlet Container will run with native optimizations enabled on Raspberry Pi.

More information including minor required configuration change is available on Caucho’s Resin 4 Wiki: Resi On Raspberry Pi

Posted in Uncategorized | No Comments »

Resin PDF Health Reports

January 2nd, 2013 by Paul Cowan

When attempting to diagnose application errors or performance issues, the single best tool Resin makes available are the Resin PDF Health Reports. They are also the first things we request when addressing customer support questions.

Resin can generate two slightly different PDF health reports: Snapshot and Watchdog reports. A Snapshot Report captures a “snapshot” of Resin at the current point in time. A Watchdog Report aggregates as much information as available about Resin at a “previous” point in time. Watchdog reports can also be thought of as a “post-mortem” or “restart” report, as they usually are generated immediately after an unexpected server restart.

Snapshot reports can be generated on the command-line:

unix> resinctl pdf-report -local -local-dir /tmp

via REST:

unix> curl ‘http://localhost:8080/resin-rest/pdf-report?snapshot=true&load-pdf=true’ > snapshot.pdf

or via Resin-Admin on the PDF Page:

http://localhost:8080/resin-admin/index.php?q=pdf&s=0

Watchdog report are usually generated automatically after any unexpected server restart. Check your logs directory for Watchdog-*.pdf files. However you can always regenerate a Watchdog report from Resin-Admin on the Watchdog Page:

http://localhost:8080/resin-admin/index.php?q=watchdog&s=0

The Resin Administration Console video on YouTube provides an excellent overview of Resin-Admin and PDF Health Report content.

Tags: health, pdf, snapshot
Posted in Uncategorized | No Comments »

Quercus, meet PHP 5.4 and shake hands, please

December 29th, 2012 by nam

I just extended Quercus to support the new core language features of PHP 5.4. The changes are currently in our subversion repository and should be in our next release: 4.0.34. Traits, new in 5.4, was a bit of a pain to implement because of all the weird edge cases (i.e. __CLASS__, insteadof, as). Here’s a list of what’s new:

  • traits
    <?php
    
    trait T0 {
      function foo()
      {
        echo "inside T0->foo()\n";
      }
    }
    
    class A {
      use T0;
    }
    
    $a = new A();
    $a->foo();
    
    ?>
    
  • Read the rest of this entry »

Tags: php 5.4, quercus, traits
Posted in Announcements, Engineering | 2 Comments »

Quercus on Google App Engine - 2.0

December 6th, 2012 by nam

The following article originally appeared on JavaAdvent 2012.

It’s been a 3.5 years ago to this day since I last wrote about running Quercus on Google App Engine (GAE). The article detailed a crazy experiment to get a PHP application, Wordpress, running on GAE. I still remember it being a painful experience because of number of changes I had to make to Wordpress to get it working. It was all due to the GAE Java environment being so drastically different from what Java developers were used to. It was heavily sandboxed and had no SQL support. You couldn’t launch new Threads. You couldn’t write to the file system. But those were the tradeoffs you had to live with if you wanted to deploy your application to the all-wonderful Cloud.

Fast-forward to 2012 and GAE has come a long way. GAE now allows you to spawn new Threads (currently in beta). You still cannot write to the file system, but for all it’s worth there is a new GAE Files API that gives you file-like concepts. And you can run your very own MySQL instances on Google’s infrastructure (albeit Google’s customized version of MySQL).

What hasn’t changed over the years is that you’re still expected to hit major roadblocks as you migrate your existing web applications over to GAE. And you’ll have to make heavy modifications to your application to 1) make it work and 2) be performant on GAE.

So this is where Quercus comes into the picture. At Caucho, we spent a lot of time getting Quercus to work seamlessly with GAE. Our goal was to abstract the GAE details away so that developers don’t have to worry about the fact that the application is running on GAE. Things just work transparently behind the scenes for PHP applications. For example,

  • PHP file_*() functions work just like they do before (including writing to files!)
  • PHP mysql_*() functions and PDO work just like they do before

Read the rest of this entry »

Tags: google app engine, google cloud sql, google cloud storage, php, quercus, wordpress
Posted in Engineering | 5 Comments »

Cluster Configuration Using a Centralized Configuration Server

September 4th, 2012 by Paul Cowan

Resin has the very convenient ability to import configuration from an HTTP URL. This feature in combination with clever usage of environment variables can be a huge help avoiding the issues caused by maintaining local copies of configuration files in a large environment. In this Wiki article I setup a webserver as a centralized configuration repository and show how to modify your local Resin configuration such that the same file can be used by any Resin instance in any environment.

http://wiki4.caucho.com/Cloud:_Cluster-Wide_Configuration_Using_HTTP

Tags: cluster, configuration
Posted in Uncategorized | No Comments »

NginX versus Resin Pro: Resin wins this round

August 21st, 2012 by caucho

You may think of us as a vendor. We think of ourselves as a bunch of engineers who sit around and ask questions like: “is NginX faster and if so why?”. If we deliberately gamed a benchmark that would take all of the fun out of it. We like the competition. Resin has always been really fast, but competition from NginX has made us faster.

Read the rest of this entry »

Posted in Benchmarks | No Comments »

Running Jasper JSP Engine on Resin

August 15th, 2012 by alex

I posted a new wiki entry that explains how to run Jasper JSP Engine on Resin: http://wiki4.caucho.com/Jasper_JSP_Engine_On_Resin_Deployment.

Posted in Uncategorized | No Comments »

NginX 1.2.0 versus Resin 4.0.29 performance tests

July 5th, 2012 by caucho

We have recently run some performance benchmarks comparing Resin 4.0.29 versus NginX 1.2.0. These benchmarks show that Java-based Resin Pro matches or exceeds C-based NginX’s throughput.

Summary: Using industry standard tool and methodology, Resin Pro web server was put to the test versus Nginx, a popular web server with a reputation for efficiency and performance. Nginx is known to be faster and more reliable under load than the popular Apache HTTPD. Benchmark tests between Resin and Nginx yielded competitive figures, with Resin leading with fewer errors and faster response times. In numerous and varying tests, Resin handled 20% to 25% more load while still outperforming Nginx. In particular, Resin was able to sustain fast response times under extremely heavy load while Nginx performance degraded. (See related press release).

Read the rest of this entry »

Posted in Uncategorized | No Comments »

Deploying Seam-Booking Example on Resin Server

June 26th, 2012 by alex

Scott and I just finished work on making sure Seam-Booking example works on Resin. I posted a tutorial on deploying seam-booking in Resin at Resin Wiki: Seam On Resin . It requires Resin 4.0.29 which is due in about a week from now.

Posted in Uncategorized | No Comments »

Does Resin Support EJB remoting?

May 16th, 2012 by caucho

The short answer is no. The longer answer is that Resin supports Hessian for remoting. And, in about 20 lines of code, you can expose all @Stateless/@Remote beans as remote services using the Hessian protocol using CDI and Servlet 3.0, which are part of Resin and part of Java EE Web Profile (as Resin 4 is a Java EE Web Profile certified application server).

Hessian (now Hessian 2) predates many other forms of remoting and is a [http://daniel.gredler.net/2008/01/07/java-remoting-protocol-benchmarks/ wicked fast, binary protocol] (faster than CORBA, RMI, SOAP, XML-RPC, etc). You could think of Hessian as a high performance binary JSON. Hessian has been ported to many languages. Hessian is a remoting framework and a flexible Java serialization framework.

You can expose any bean as a Hessian remote bean quite easily. Hessian has been around for 10 years, and is very solid. (Both Hessian and Resin are development and maintained by Caucho).

Resin 4 documentation does not have Hessian documentation yet, but Hessian usage has not changed in years. You can find a good tutorial on getting started with Hessian from the [http://www.caucho.com/resin-3.0/protocols/hessian.xtp Resin 3 documentation]. I’ve tried these tutorial steps in Resin 4 and the tutorial works as advertised.

Resin 4 is Java EE Web Profile certified as such it does not support CORBA, EJB remoting, etc. However Resin does support Java Dependency Injection (CDI), which allows you to easily find beans with certain annotations. What follows is a simple example that finds all @Stateless beans that have @Remote interfaces and automatically exposes those beans as remote hessian objects.

To learn more go to our wiki for Resin 4 Java EE WebProfile application server.

Posted in Uncategorized | No Comments »

« Older Entries

Caucho Technology is proudly powered by WordPress and Quercus®
Entries (RSS) and Comments (RSS).

  • HOME |
  • CONTACT US |
  • DOCUMENTATION |
  • BLOG |
  • WIKI 4 |
  • WIKI 3 |
  • Resin: Java Application Server
Copyright (c) 1998-2012 Caucho Technology, Inc. All rights reserved.
caucho® , resin® and quercus® are registered trademarks of Caucho Technology, Inc.
resin® is a cloud optimized, java® application server that supports the java ee webprofile ®