📄 resin-3.0.10.xtp
字号:
<document> <header> <product>resin</product> <title>Resin 3.0.10 Release Notes</title> </header><body><summary objsummary="localtoc"/><s1 title="resin:type requires namespace"><p>The configuration file validator is now more strict about thenamespace of resin:type. The resin prefix must be defined as:</p><example><resin xmlns="http://caucho.com/ns/resin" xmlns:resin="http://caucho.com/ns/resin/core"> ...</example></s1><s1 title="resin:message replaces resin:log"><p>resin:message replaces resin:logsince <resin:log> and <log> conflicted. resin:log is now deprecated.</p></s1><s1 title="cluster-store has been removed"><p>Use persistent-store instead.</p></s1><s1 title="UserConnection.discardConnection()"><p>Added com.caucho.sql.UserConnection.discardConnection() to allowtermination of broken connections undetected by the ping functionality.</p></s1><s1 title="saving connection stack traces"><p>For debugging, when database connections aren't closed, theallocation stack traces are now automatically saved for subsequenctallocations.</p></s1><s1 title="cookie-http-only"><p>Adds the <a href="http://msdn.microsoft.com/workshop/author/dhtml/httponly_cookies.asp">HttpOnly</a>flag to all cookies generated in a web-app to avoidcross-site scripting attacks.</p></s1><s1 title="lazy-servlet-validate"><p>If true, Resin will only check that the servlet-class exists when it'sactually used. Normally, Resin will validate theservlet-class immediately.</p></s1><s1 title="ssl-session-cookie"><p>ssl-session-cookie specifies an alternate session cookie for use insecure connections. This prevents the possibiliy of snooping thenon-SSL connection and then replaying the session cookie.</p></s1><s1 title="ear-deploy, war-deploy"><p>ear-deploy and war-deploy now have an expand-prefix to selectthe expansion prefix, e.g. _ear_.</p><p>Also added require-file.</p><example><ear-deploy path="deploy" expand-prefix="" require-file="META-INF/application.xml"/><war-deploy path="deploy" expand-prefix="" require-file="WEB-INF/web.xml"/></example></s1><s1 title="server-header"><p>The <server> section now accepts a <server-header> to overridethe Server response header.</p></s1><s1 title="Class reloading"><p>Class reloading is now available for Resin-OS and can be usedwith agentlib</p></s1><s1 title="CauchoConfigCacheDirectory"><p>Apache directive to set the cached mapping file.</p></s1><s1 title="keepalive-max"><p><http> now has a <keepalive-max> attribute.</p></s1><s1 title="merge: VFS schema"><p>Path values now support a merge schema. The merge path isa collection of paths, like a classpath. The syntax is: "merge:(foo/bar;baz)", i.e. it uses ';' as a path separator.</p><p>The most important use of the merge schema is for a web-appdocument-directory, allowing for development or customization enhancementswithout affecting the raw web-app.</p><example><web-app id="foo" document-directory="merge:(../custom-foo;foo)"/></example></s1><s1 title="@TransactionAttribute and AOP MethodInterceptor"><p>The EJB 3.0 @TransactionAttribute capability is now available forany Java class. It is no longer restricted to SessionBeans.</p><p>The @TransactionAttributesupport can now be applied to any bean without any Resin-specificannotations. In addition, the attribute class is configurable.</p><example title="example/MyClass.java">package example;import javax.ejb.TransactionAttribute;public class MyClass { ... @TransactionAttribute public void myFoo() { ... }}</example><example title="resin-web.xml"><web-xml xmlns="http://caucho.com/ns/resin"> <classloader> <enhancer> <method annotation="javax.ejb.TransactionAttribute" type="com.caucho.transaction.enhancer.TransactionEnhancer"/> </enhancer> </classloader> ...</web-xml></example><p>The enhancer also supports AOP Alliance MethodInterceptors, allowingfor custom annotations.</p><example title="resin-web.xml"><web-xml xmlns="http://caucho.com/ns/resin"> <classloader> <enhancer> <method annotation="example.MyAnnotation" type="example.MyMethodInterceptor"/> </enhancer> </classloader> ...</web-xml></example><example title="example.MyMethodInterceptor" language="java">package example;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;public class MyMethodInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation inv) throws Throwable { System.out.println("<method>"); try { return inv.proceed(); } finally { System.out.println("</method>"); } }}</example></s1><s1 title="log mbean-name"><p>Logs can now have an mbean-name.</p><example><log name="qa.Test" mbean-name="type=Log,name=qa.Test" path="log/test.log" level="fine"/></example><p>The MBean interface is com.caucho.log.mbean.LogMBean.</p></s1><s1 title="META-INF/resin-ejb-jar.xml"><p>Added resin-ejb-jar.xml for EJBs. Resin already parses META-INF/foo.ejb files.</p></s1><s1 title="shutdown-wait-max"><p>shutdown-wait-max is now also a configurable item in the <resin> block.It's necessary to set the <resin> value as well as the <web-app> value.</p></s1><s1 title="lazy web-app and idle-time"><p>Lazy web-apps (start-mode="lazy"), are now automatically undeployedwhen idle-time is expired (default 2h).</p></s1><s1 title="resin.jar startup"><p>To allow for resin.conf to configure the JVM parameters, resin.jarfor Resin-Professional now can start a Resin daemon.</p><example>unix> java -jar lib/resin.jar start...unix> java -jar lib/resin.jar stop</example></s1><s1 title="bind-ports-after-start"><p>If true, listen to the http ports after the server is done initializing.</p></s1><s1 title="multipart form"><p>The multipart form processing can now accept a "caucho.multipart.form.upload-max" request attribute to set the size on a per-request basis.</p><p>The multipart form error now returns a "caucho.multipart.form.error.size".</p></s1><s1 title="error-page in server"><p>error-page is now allowed in <server> to handle <busy> pages.</p></s1><s1 title="rewrite-dispatch"><p>The dispatch functionality of mod_rewrite has been added. Currently,it only supports redirect.</p><example><rewrite-dispatch> <redirect regexp='^/foo' target='http://www.foo.com'/></rewrite-dispatch></example></s1><s1 title="rewrite-real-path"><p>The real-path functionality of mod_rewrite has been added. Itapplies to the getRealPath mapping.</p><example><rewrite-real-path> <rewrite regexp='/(foo)' replacement='/-$1-$0'/></rewrite-real-path></example></s1><s1 title="programmatic DBPool"><p>The DBPool can now be used to create Pools programmatically. It'sstill strongly recommended to use the configuration file instead.</p><example>TestDriver driver = new TestDriver();DBPool pool = new com.caucho.sql.DBPool();pool.setJndiName("test");pool.setJDBCDriver(driver);pool.setURL("jdbc:test:foo");pool.init();</example></s1><s1 title="servlet-mapping schema"><p>The servlet-mapping schema was incorrect for the Resin namespace.The correct order is servet-name, url-pattern.</p></s1><s1 title="invocation-cache-size"><p>New <server> parameters: invocation-cache-size and invocation-cache-max-url-size (default 256)</p></s1><s1 title="client-read-timeout"><p>The client-read-timeout is now available in cluster-definition.</p></s1><s1 title="caching"><p>The caching backing has changed to a more efficient backing store.</p></s1><s1 title="cache/max-entry-size"><p>The <cache> has a new parameter: max-entry-size.</p></s1><s1 title="cluster session"><p>The cluster session store has changed to a more efficient backing store.</p></s1><s1 title="Configuration"><s2 title="resin:type"><p>resin:type can now be used in more places, for example in string values,allowing custom classes to computer values.</p><example><driver type="com.foo.DataSource"> <url>jdbc:foo://localhost</url> <password resin:type="foo.Password">Xm91/zI==</password></driver></example><example title="foo/Password.java">package foo;public class Password { String _value; public void addText(String value) { _value = value; } public Object replaceObject() { return decode(_value); }}</example></s2><s2 title="resin:resource"><p><resin:resource> (and <resource>) now allow a var="foo" attribute,which sets configuration variables. This lets configuration files settemporary resources without using jndi.</p><p>In the following example, the MyBean object has a <code>setData</code>method. The resin:resource creates a temporary variable.</p><example><my-bean xmlns:resin="http://caucho.com/ns/resin/core"> <resin:resource var="foo" type="qa.MyResource"/> <data>${foo}</data></my-bean></example><p>resin:resource is now allowed anywhere, including in a custom bean.</p></s2><s2 title="com.caucho.config.Config"><p>The com.caucho.config.Config facade now makes it easy to useResin's dependency-injection configuration machinery for custom classes.The <code>configure</code> method takes a Java object andan <code>InputStream</code> to the configuration file andconfigures the object.</p><example>InputStream is = new FileInputStream("conf.xml");try { Config.configure(myObject, is);} finally { is.close();}</example></s2></s1><s1 title="Acknowledgements"><p>Thanks to Dave Brosius for locating bugs in XML parsing, EJB-QL, and Amber query caching.</p><p>Thanks to Bin for adding the batch compilation capability to JspCompiler.</p></s1></body></document>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -