Tomcat 定制JNDI URL Resource

有个项目生产环境是Webshpere,WAS提供了基于URL的JNDI Resource, 而我们的自动化集成测试阶段使用的tomcat容器不支持这种类型的Resource,所以需要自己定制。定制很简单,先按tomcat定制resource的方式建一个jar可以读取url,加入到tomcat的classpath,然后就可以通过配置来使用基于URL的JNDI资源了。这里给出一个通过jndi访问文件夹路径的例子。

  • 建立jar,通过建立一个jar maven项目,然后在里面定义一个com.demo.URLFactory的类,加入以下实现,然后build出jar文件(例如:tomcat_jndi_url.jar)
public class URLFactory implements ObjectFactory
{

    @Override
    public Object getObjectInstance(Object obj, Name name, Context context, Hashtable environment) throws Exception
    {
        Reference ref = (Reference) obj;
        String url = (String) ref.get("url").getContent();
        return new URL(new URL("file:"),url);
    }

}
  • 将jar放入tomcat的classpath目录
  • 在tomcat加入resource创建方式,指定之前包中的类来生成url
"url/demo"
              auth="Container"
              type="java.net.URL"
              factory="com.demo.URLFactory" url="./demo/"/>
  • 在web.xml加入resource使用方式
<resource-ref>
  <description>Object factory for url.</description>
  <res-ref-name>url/demo</res-ref-name>
  <res-type>java.net.URL</res-type>
  <res-auth>Container</res-auth>
  <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
  • 在Spring xml配置文件中加入jndi-lookup,就可以访问到文件夹地址了
id="demo" jndi-name=" java:comp/env/url/demo"/>

你可能感兴趣的:(Java,Web,Java)