Resin Pro Download

For testing and starting out.
  • Java EE 6 Web Profile
  • World's fastest web server
  • Watchdog process
  • No third-party dependencies
  • Quercus
For large production applications.
  • Java EE 6 Web Profile
  • World's fastest web server
  • Watchdog process
  • No third-party dependencies
  • Quercus Professional
  • Dynamic cloud servers
  • Distributed sessions
  • Distributed JCache
  • Smart load balancer
  • OpenSSL integration
  • Fast proxy cache
  • Cluster health monitoring
  • High performance socket JNI
  • Enterprise support options

Resin Pro 4.0 is the current stable release branch suitable for production use.

Resin Pro 4.0.39



This is a maintenance release.

Change List

  • session: session-mode=before-header was disabling reloading on secondary servers (#5639, rep by Thomas Rogan)
  • resin: disable-soft command timeout error fix (#5656, rep by Sarah Gillespie)
  • resin: shutdown-wait-max not propagating to ShutdownSystem fix (#5660, rep by Shinomiya Nobuaki)
  • resin-admin: cross-site scripting vulnerability in /resin-admin (#5669, rep by G. Krstic)
  • jsp: taglib defined listeners should be called before Filter\'s init() (#5659, rep by Mattias Jiderhamn)
  • quercus: SimpleXMLElement->xpath() does not work for relative queries (#5622, rep by G. Krall)
  • quercus: SimpleXMLElement->children() returns null values (#5432, rep by ckir)
  • quercus: DOMDocument->schemaValidate() not implemented (#5613, rep by G. Krall)
  • quercus: empty() needs to call ArrayAccess->offsetExists() (#5620, rep by tssets)
  • quercus: spl_object_hash() not implemented (#5623, rep by G. Krall)
  • quercus: cannot execute multiple PDO statements on the same connection (#5625, rep by remaus)
  • quercus: nowdoc does not work (#5626, rep by remaus)
  • quercus: parent classes needs to call its version of private methods within its scope (#5631, rep by G. Krall)
  • quercus: ReflectionParameter::getClass() returns null (#4863, rep by ds82)
  • quercus: Parent keyword does not work inside a Trait (#5581, rep by tobia)
  • quercus: class_alias() is not implemented (#5443, rep by jsnoriegam)
  • quercus: quercus namespace issue in compiled mode (#5640, rep by R. Emaus)
  • quercus: simplexml children()->foo does not work for nodes with only text (#5655, rep by G. Krall)
  • quercus: rename META-INF/services/* so JBoss doesn\'t parse them (#5654, rep by G. Krall)
  • quercus: JsonSerializable class not implemented (#5504)
  • quercus: add FILTER_SANITIZE_STRIPPED as an alias of FILTER_SANITIZE_STRING (#5663, rep by M. McHugh)
  • quercus: implement filter_input(FILTER_UNSAFE_RAW) for phpMyFaq (#5661, rep by M. McHugh)
  • quercus: implement FILTER_SANITIZE_SPECIAL_CHARS (#5665, rep by M. McHugh)
  • quercus: force the java Mysql driver to use prepared statements (#5671, rep by R. Emaus)
  • quercus: quercus cannot start on Wildfly (#5674, rep by G. Krall)
  • quercus: unpack(\"H*\") returns nothing (#5676, rep by M. Dykman)
  • quercus: clearstatcache() has 2 optional arguments (#5687, rep by G. Krall)
  • quercus: stream_is_local() is not implemented (#5685, rep by G. Krall)
  • quercus: curl_multi_init() suite of functions not implemented (#3516, rep by koreth)
  • quercus: SplObjectStorage class not implemented (#5696, rep by G. Krall)

Resin Pro 4.0.38



This is a maintenance release.

Change List

  • win32: windows returns incorrect mtime for stat() for DST (#5578, rep by Jason Barr)
  • deploy: NPE on undeploy (#5596)
  • session: update to session id generation to reduce reliance on SecureRandom to avoid duplication (#5602)
  • memcached: MemcachedClient in independent Resin\'s was improperly caching (rep by Scott Weatbrook)
  • jpa: EntityManager proxy needs to check isOpen before freeing EntityManager for reuse (#5541, rep by Riccardo Cohen)
  • ear: dependency-check could get stuck in the modified state (#5525, rep by Ryan Edwards)
  • rpm: %config updates for /etc/resin, and file mode on /usr/bin (#5562, rep by Christopher Powell, #5539, rep by Khalid Hosein)
  • cache: add memory-size-min to ClusterCache to configure minimum memory cache size (#5558, rep by J Tschida)
  • cluster: dynamic server must heartbeat address to recover from triad restarts (#5561, rep by T Pohl)
  • health: sort message times so PDF report of health dump will be most recent (#5358)
  • watchdog: increate idle thread on startup to avoid dependency on swap (#5500, rep by K. Hosein)
  • jms: transaction/ack issues with file and message driven bean (#5535, rep by Scott Weatbrook)
  • hessian: InetAddress serialization (#5540, rep by Michael Charnoky)
  • servlet: on shutdown, check facade._request for null (#5537)
  • deploy: redeploy delete issues with symlinks (#5536, rep by ssmax)
  • health: OpenFileDescriptorCount is not available on some JMVs (#5515, rep by Y. Zhao)
  • servlet: missing cookie-config in web.xml (#5521, rep by Arjan Tijms)
  • ioc: remove validatio of generic type on produces method (#5522, rep by A Tijms)
  • ioc: extends observers now auto-convert ProcessManagedBean<Foo> to ProcessManagedBean<? extends Foo> (#5531, rep by A Tijms)
  • quercus: empty() needs to call ArrayAccess->offsetExists() (#5612, rep by G. Krall)
  • quercus: session_status() not implemented (#5609, rep by G. Krall)
  • quercus: self doesn\'t work inside a namespace (#5608, G. Krall)
  • quercus: ReflectionParameter->getClass() not implemented (#5607, rep by G. Krall)
  • quercus: IllegalArgumentException vfs: not found on JBoss (#5606, rep by G. Krall)
  • quercus: ReflectionFunction does not work for closures (#5605, rep by G. Krall)
  • quercus: Xml reader is not working (#5603, rep by qumo)
  • quercus: call_user_func() needs to call __invoke (#5601, rep by G. Krall)
  • quercus: instanceof Closure returns false for closures (#5600, rep by G. Krall)
  • quercus: QuercusCompiledScript.eval() needs to return the Value object (#5589, rep by S. Guo)
  • quercus: ScriptEngineManager.getEngineByName(\"php\") returns Quercus with unicode.semantics=off (#5588, rep by S. Guo)

Resin Pro 4.0.37



This is a maintenance release.

Change List

  • ejb: avoid double EJB timer call when timer is slow (#5518, rep by K. Hosein)
  • admin/rest: missing close on resource
  • windows: Added a global mutex to windows service wrapper to avoid starting multiple instances of Resin Watchdog
  • cloud: elastic server issues with dynamic remove/timeout (#5510, rep by T Pohl)
  • log: check for null logger name in LogRecord (#5499)
  • cdi: cdi vs jpa load order (#5493)
  • elastic: elastic servers use server-multi defaults (#5412)
  • jni: added check on nativeRead for buffer length (#5428, rep by Daniel Shearer)
  • deploy: start/fail must notify waiting threads (Hrushi Agrawal)
  • health: AnomalyAnalyzer now has min-deviation to avoid spurious messages (#5365)
  • cli: add password verification to password-generate (#5384)
  • access-log: add <access-log-buffer-size> in <cluster> (#5393, rep by A. Foong)
  • bam: force restart if BAM overflow continues (#5479, rep by J. Barr)
  • vfs: stat vs _stati64 issues on win64 (#5494, rep by Matias Lagerwall)
  • jsp: updated JSP page compile locking (#5460, rep by Nikolay Fedorov)
  • jsf: updated javax.faces to 2.1.24 (#5485, rep by cyttesen)
  • load-balance: cookie with max-age(0) not properly propagated (#5456, rep by H. Cleland)
  • shutdown: avoid spurious warnings on connection close during shutdown (#5463, rep by Stefanos Zachariadis)
  • cdi: multiple initializer classes in separate jars need to be unique (#5481, rep by Rick Mann)
  • bytecode: add constant-pool scanning for JDK 7 MethodHandle (#5466, rep by wxiaoguang)
  • session: add table-name to JDBC sessions (#5488, rep by B. Garber)
  • watchdog: add -Djava.web.headlesslib=true (# 5474, rep by Riccardo Cohen)
  • el: descriptor in BeanELResolver should be initialized lazily to work around JSF memory leak (rep by Mattias Jiderhamn)
  • servlet: ServletResponse.reset() should reset cookies (#5464)
  • fixed Resin.IIS.handler.dll intermittent slow connection to resin issue (#5455, rep by Shinomiya Nobuaki)
  • cli: heap-dump double-dash isn\'t recognized with -raw option(#5454)
  • socket: client-disconnect exception needs to construct exception before socket close (#5392)
  • openssl: added \"compression\" flag with a default false (#5435)
  • jsp: dependency detection issues with inner classes causing recompilation (#5408, rep by stefan_bieler2)
  • servlet/async: async support with hmux (#5420, rep by bhauer1)
  • el: issue with permissions on inner classes (#5447, rep by mate)
  • webapp: check state on controller init (#5406, rep by gattu)
  • servlet: allow @Observes on servlet (#5444)
  • cli: status command needs to accept -watchdog-port (#5442)
  • servlet: getServerName() with IPv6 and no port (#5399, rep by shiny)
  • servlet: servlets with @Inject were not calling servlet init() (#5427, rep by Bill Digman)
  • classloader: classload errors in system classloader should not be at warning (#5416)
  • ejb: @Schedule must be removed when context closes (#5434)
  • cli: --version option was treated as version command (#5415, rep by Tamas Perlaky)
  • jsp: array index exception from utf-8 encoding buffer issues (#5436)
  • jsp: utf-8 encoding buffer issues with surrogate pairs (#5437)
  • network: issue with socket-timeout an non-jni (#5426, rep by HS Im)
  • quercus: preg_replace($array[0]) array dereference fix for preg_replace
  • quercus: ReflectionProperty::isProtected() fix
  • quercus: method_exists(\"__invoke\") does not work with closures (#5501)
  • quercus: static local variables must be unique to a particular closure instance (#5502)

Resin Pro 4.0.36




Resin\'s HTTP Proxy module has been updated to support full load-balancing, failover, and network timeouts. A proxycache cluster was added to resin.xml and, including the new \'backend_servers\' property used to supply a list of backend HTTP servers to proxy to. Resin\'s proxy-cache request caching capability is automatically applied on this layer, providing true HTTP caching proxy capability.

BAM: clustered messaging

The low-level queuing implementation for BAM\'s mailboxes has been updated to better handle high load spikes. The BAM queues have also been extended to handle larger load.


Quercus encoding issues with MySQL databases have been resolved.

Change List

  • bam: updated bam queue size to handle heavy load better
  • actor-queue: updated non-locking synchronization on ring queue
  • websocket: IllegalStateException when data size exceeds a single message (#5394, rep by S Zachariadis)
  • quercus: quercus_disable was misnamed (#5389, rep by J Craan)
  • access-log: added buffer-size to access log at cluster level (#5378, rep by Andrew Foong)
  • apache: added apache 2.4 support(#5241)
  • apache, iis: added support for disabled servers(#5364)
  • embed: add ResinEmbed.setServerId (#5350, rep by D. Shearer)
  • jmx: MBean/MXBean interface scanning was assuming class implementation matching (#5357, rep by Steve Francis)
  • jdbc: added jdbc 7 stub methods for compilation (#5370)
  • cdi: add NoClassDefError catches for optional classes (#5371)
  • session: jdbc session support for isolated server instances (#5374, rep by Keith Paulson)
  • jCache: removeAll support
  • jCache: isStoreValue=true (#5343)
  • jCache: spec changed to use Configuration instead of builders
  • apache: mod_caucho fix for failover issue(#5266, rep by Shinomiya Nobuaki)
  • iis: isapi_srun.dll fix for failover issue(#5360, rep by Jason Barr)
  • quercus: Overloading: __callStatic not implemented (#4247, rep by domdorn)
  • quercus: mysqli_get_charset, mysqli_set_charset not implemented (#5379)
  • quercus: error_get_last() not implemented (#5380, rep by kenfoo)
  • quercus: drupal utf-8 issue (#3772, rep by bago)
  • quercus: mysql utf-8 inserts are viewable in MySQL GUI browsers (#3849, Ocean)
  • quercus: mysql Character Encoding incompatibility with standard PHP (#3618, rep by tlandmann)
  • quercus: cannot find license in non-WEB-INF directories (#5397, rep by adam)
  • quercus: $_SERVER[\'HTTP_X_SSL_REQUEST\'] is not set for SSL connections (#5402, rep by V. Spivak)
  • quercus: gethostname() not implemented (#5403, rep by V. Spivak)
  • quercus: wordpress plugin Contact Forms 7 does not work (#5407)
  • quercus: static::$foo needs to return child\'s field when inside parent:: methods (#5409, rep by V. Spivak)
  • quercus: Quercus PHP does not understand Java enums (#3898, rep by syndetic)
  • quercus: java Enum returned from method should be of Enum type (#5411, rep by zalmolksis)
  • quercus: NULL values is handled different in method arguments - java interface (#5413, rep by zalmolksis)
  • quercus: error_log not working correctly with files (#4178, rep by kmoore4now)
  • quercus: error_log() needs to print a newline after each log message (#5289, rep by chubbsondubs)

Resin Pro 4.0.35



BAM/Actor Worker Thread Fixes

Updated the thread launching for workers threads to avoid possible synchronization issues.


Added min-threshold and max-threshold to AnomalyAnalyzer and min-value and max-value, to limit overzealous analyzer reports.

Change List

  • install: ./configure fix don\'t set -m32 on Raspberry Pi
  • db: cleanup for index validation/restore
  • actor: updates for actor threading to avoid queue overflow (#5362)
  • access-log: %{Set-Cookie}o should also print addHeader values (#5352, rep by A. Foong)
  • access-log: %{Set-Cookie}o should print all cookies (#5353, rep by A. Foong)
  • health: add min-threshold and max-threshold to AnomalyAnalyzer
  • health: add min-value and max-value to AnomalyAnalyzer
  • admin: fixed rest.php?q=mod_status support (#5351)
  • servlet: encoding for et, lt, lv should be ISO-8859-4 (#5355)
  • servlet: .DS_store hidden from directory servlet (#5341, rep by Jason Walsh)
  • watchdog: removed repeated CLI properties (#5342)
  • cloud: server-multi needs to support cluster-port (#5345)
  • health: if health-system is disabled and an event occurs, log at a lower level (#5344)
  • servlet: changed default encoding for et, lv, lt locales to iso-8859-2
  • health: pdf-report thread-dump printing when missing file info (#5347)
  • health: add DumpThreads.setDepth to control the max thread depth (#5348)
  • cloud: CloudPod.findServer array bounds issue (#5346, rep by Jason Barr)
  • quercus: OutOfMemory with UserCake Captcha (#5354)


To help us better understand our users, please be kind enough to provide your information.

Older releases are available in the download archive.