| ||||||||||||||||||
Resin 3.1 Documentation Examples Changes Release Notes Change Logs Resin 3.1.2 Resin 3.1.1 Resin 3.1.0 Archive Resin 3.0.20 Resin 3.0.19 Resin 3.0.18 Resin 3.0.17 Resin 3.0.16 Resin 3.0.15 Resin 3.0.14 Resin 3.0.13 Resin 3.0.12 Resin 3.0.11 Resin 3.0.10 Resin 3.0.9 Resin 3.0.8 Resin 3.0.7 Resin 3.0.6 Resin 3.0.5 Resin 3.0.4 Resin 3.0.3 Resin 3.0.2 Resin 3.0.1 Resin 3.0.0 |
Dependency Injection/Inversion of ControlResin's buzzword compliance has been enhanced in 3.0.8. Instead of the old, boring "bean-style init" phrase, parts of the documentation have been upgraded to use the snazzier "dependency injection" buzzword. Since Resin's configuration is based on setters, the proper buzzword is "setter based dependency injection." The upgraded, buzzword-compliant documentation includes:
The main documentation on Resin's bean-style init has not yet been upgraded to the new buzzwords, but provides more information on the configuration patterns. MBean JNDI - MBean Dependency InjectionMBeans now have a JNDI URL, "mbean:", which allows them to the used for bean-style init (Dependency Injection.) The JNDI lookup will return the MBean's proxy interface if one is available. If a MBean domain is included in the name, e.g. "mbean:foo:type=Bar", Resin will use the full MBean name. If only the attributes are used, e.g. "mbean:type=Bar", Resin will add the local JMX context name. In other words, Resin will add the web-app's properties. This allows the configuration to be independent of the web-app or host configuration block. So "mbean:type=Bar", might be converted to the full MBean name "resin:Host=foo.bar,WebApp=/dir,type=Bar". Since jndi:lookup can be used for dependency injection (bean-style init), you can use it to configure mbeans. <web-app xmlns="http://caucho.com/ns/resin"> <resource mbean-name="type=Test" type="qa.Test"/> <resource jndi-name="t1" type="qa.T1"> <init> <test>\${jndi:lookup("mbean:type=Test")}</test> </init> </resource> </web-app> In the preceeding example, T1 has a Persistent/Distributed sessionsThe persistent/distributed sessions have been changed because the old configuration had caused much confusion. (The old configuration still works for backward compatibility.) <persistent-store> configures the persistent/distributed store in the <server> level for all persistent store types: jdbc, cluster (tcp), and file. The <server> level is required because the persistent-store needs to communicate with other servers in the cluster to notify about updates. Each <web-app> needs to enable persistent store for its session-config individually. The use-persistent-store attribute of the <session-config> enables the persistent-store. As usual, you can use <web-app-default> to enable configuration for all web-apps. <resin xmlns="http://caucho.com/ns/resin"> <server> <cluster> <srun server-id="a" port="6810" index="1"/> <srun server-id="b" port="6811" index="2"/> </cluster> <persistent-store type="jdbc"> <init data-source="jdbc/session"/> </persistent-store> <web-app-default> <session-config use-persistent-store="true"/> </web-app-default> <host id=''> <web-app id='/'/> </host> </server> </resin> cluster client configurationThe client configuration for the cluster is now configurable (e.g. for load balancing and distributed sessions). <resin xmlns="http://caucho.com/ns/resin"> <server> <cluster> <client-live-time>60s</client-live-time> <client-dead-time>15s</client-dead-time> <client-read-timeout>10s</client-read-timeout> <client-write-timeout>15s</client-write-timeout> <srun .../> </cluster> ... </server> </resin> http/srun timeout configurationAdded read-timeout and write-timeout for http and srun . <http host="localhost" port="8080"> <read-timeout>120s</read-timeout> <write-timeout>60s</write-timeout> </http> web-app-deploy Enchancementsweb-apps configured with web-app-deploy can now be custom configured in the resin-conf using <web-app> inside the web-app-deploy. In particular, the <web-app> can define a <context-path> different from the default value given by the .war name. The web-apps are matched using the <document-directory> as a unique identifier. ... <web-app-deploy path="webapps"> <web-app context-path="/foo" document-directory="bar"/> </web-app-deploy> ... startup-mode, redeploy-mode, and WebAppMBean.restart()Application redeployment is now controllable through the web-app web.xml and through JMX. The startup-mode has three values: "automatic", "lazy", and "manual".
The redeploy-mode has two values: "automatic", and "manual".
The WebAppMBean has three new methods:
log rotation and compressionIf the archive-name for log rotation ends in ".gz", then Resin will use GZip to compress the log when it's rotated. See the log configuration. <log name="" level="warning" path='log/error.log' archive-format="%Y-%m-%d.error.log.gz" rollover-period="1D"/> <access-log path="log/access.log" archive-format="access-%Y%m%d.log.gz" rollover-period="1D"/> Ping Enchancements: Deadlock detection with JDK 1.5With JDK 1.5, the <ping> resource will check the JDK to detect deadlocks and will automatically log the deadlocked threads and restart the JDK when deadlocks are detected. Cache invalidationThe ServletServerMBean adds clearCache() and clearCacheByPattern(). Portlet SupportResin's Portlet support provides a generic library package for application to use the portal/portlet design pattern. The portlet support is currently in Beta. Groovy SupportResin can use Groovy scripts as Java classes or even as servlets. Full Groovy support is waiting for an important bug fixes from Groovy. See the Groovy Bug Report 375 and vote on it. To enable Groovy support, put the groovy*.jar and the asm-*.jar in resin/lib. Then add a <compiling-loader> entry to the <class-loader> configuration. <web-app xmlns="http://caucho.com/ns/resin"> <class-loader> <compiling-loader path="WEB-INF/groovy" compiler="groovyc" source-extension=".groovy"/> </class-loader> </web-app> Once you've done that, you can drop in groovy source files in WEB-INF/groovy and use them like Java beans from your Java classes. package test; public class MyBean { public String toString() return { "groovy[]"; } } PHPPHP support has been fixed in 3.0.8. The full configuration doc is in quercus. <web-xml> <servlet servlet-name="php" servlet-class="com.caucho.servlets.FastCGIServlet"> <init> <server-address>localhost:8002</server-address> </init> </servlet> <servlet-mapping url-pattern="*.php" servlet-name="php"/> </web-xml> HessianHessian 1.0.1 has been released. Hessian 1.0.1 clarifies the non-normative naming conventions for the meta-info protocol and the object names. The new object name uses query string of "?id=XXX" to avoid dependency on EJB. The new meta-info attributes for
Hessian now supports a JNDI "hessian:" URL. Context ic = new InitialContext(); Bean bean = (Bean) ic.lookup("hessian://localhost:8080/hessian/bean"); jndi-linkjndi-link no longer requires the <factory>. Now it can be used as a symbolic link to another JNDI name. <web-app xmlns="http://caucho.com/ns/resin"> <jndi-link jndi-name="java:comp/env/stock-service" foreign-name="hessian://foo.com:8080/service/stock"/> </web-app> ThrottleFilterA new standard ThrottleFilter has been added. The filter restricts the number of requests from the same IP, defaulting to 2 (the HTTP spec limit.) The ThrottleFilter is useful to limit some parallel download programs that can use more threads than they should. <filter filter-name="throttle" filter-class="com.caucho.filters.ThrottleFilter"> <init> <max-concurrent-requests>2</max-concurrent-requests> </init> </filter> <filter-mapping url-pattern="/*" filter-name="throttle"/> 64-bit JNIThe JNI has been updated to support 64-bit compilation on Solaris. The configuration looks like: unix> ./configure --enable-64bit unix> make unix> make install unix> bin/httpd.sh -J-d64 Bugs
|