在java Web应用程序中加载外部库

时间:2012-12-04 14:16:02

标签: java tomcat servlets classloader

我的方案如下:

我有一个部署到servlet容器的WebApp.war。此WebApp.war在WEB-INF / lib中包含以下库:

  • lib_a.jar
  • lib_b.jar

我有另一个库,比如lib_vendor.jar,由于许可问题我无法在WebApp / WEB-INF / lib中部署,所以我让我们的客户在安装应用程序后在tomcat / lib中复制这个库。但由于lib_vendor.jar需要在Web应用程序类加载器中加载的lib_a.jar和lib_b.jar,因此我无法使用lib_vendor.jar。

如何在Web应用程序的同一个类加载器中加载外部库(不在WEB-INF / lib中)?

1 个答案:

答案 0 :(得分:6)

由于您使用的是Tomcat,因此可以使用VirtualWebappLoader

添加META-INF/context.xml whith

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/somepath/myapp">
    <Loader className="org.apache.catalina.loader.VirtualWebappLoader"
              virtualClasspath="/somedir/*.jar"/>
</Context>

还要记住virtualClasspath属性必须是绝对路径,如下面的评论中所述。