Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 外部化Spring库Web应用程序_Java_Spring_Websphere_Tomcat7_Static Libraries - Fatal编程技术网

Java 外部化Spring库Web应用程序

Java 外部化Spring库Web应用程序,java,spring,websphere,tomcat7,static-libraries,Java,Spring,Websphere,Tomcat7,Static Libraries,大家早上好 我想知道是否有可能将Spring库外部化。我们有很多应用程序/Web服务都使用相同的Spring-libs,现在我们被迫将应用程序部署在Websphere(8.5.0.1)服务器上。因为Websphere和Classloading与我以前知道的所有东西都有点不同 嗯 其思路如下: 创建一个包含所有SpringLibrary的mavenproject,并将此jar文件添加到服务器。我们希望继续在tomcat服务器上开发,并且只在websphere上部署,而不需要太多麻烦 但是,如果我将

大家早上好

我想知道是否有可能将Spring库外部化。我们有很多应用程序/Web服务都使用相同的Spring-libs,现在我们被迫将应用程序部署在Websphere(8.5.0.1)服务器上。因为Websphere和Classloading与我以前知道的所有东西都有点不同

其思路如下:

创建一个包含所有SpringLibrary的mavenproject,并将此jar文件添加到服务器。我们希望继续在tomcat服务器上开发,并且只在websphere上部署,而不需要太多麻烦

但是,如果我将所有SpringLib移到一个外部文件中,应用程序似乎无法正确加载(Classloader问题?)。 所以,如果你们中的任何人能给我一个提示或一个好的建议,我将非常感激。 当然,如果我错过了一个事实,为什么不可能呢

编辑: 这就是我的pom.xml实际上的样子(当然是其中的一部分),我真的,真的不喜欢它


org.apache.maven.plugins
maven战争插件
WEB-INF/lib/hibernate*.jar,
WEB-INF/lib/*spring*.jar,
WEB-INF/lib/xml API*.jar,
WEB-INF/lib/xpp3_min*.jar,
WEB-INF/lib/xstream*.jar,
WEB-INF/lib/antlr*.jar,
WEB-INF/lib/webservices api*.jar,
WEB-INF/lib/commons collections*.jar,
WEB-INF/lib/dom4j*.jar,
WEB-INF/lib/javassist*.jar,
WEB-INF/lib/jboss logging*.jar,
WEB-INF/lib/jboss事务api*.jar,
WEB-INF/lib/primefaces*.jar,
WEB-INF/lib/redmond*.jar,
WEB-INF/lib/sunny*.jar,
WEB-INF/lib/akka*.jar,
WEB-INF/lib/scala*.jar,
WEB-INF/lib/scala*.jar,
WEB-INF/lib/jsf impl*.jar,
WEB-INF/lib/jsf api*.jar,
WEB-INF/lib/config-0.3.1.jar,
WEB-INF/lib/commons collections*.jar,
WEB-INF/lib/commons lang*.jar,
WEB-INF/lib/cglib nodep*.jar,
WEB-INF/lib/slf4j api*.jar,
WEB-INF/lib/quartz*.jar,
WEB-INF/lib/c3p0*.jar,
WEB-INF/lib/ojdbc6*.jar,
WEB-INF/lib/mysql连接器java*.jar,
WEB-INF/lib/aopalliance-1.0.jar,
WEB-INF/lib/aspectjrt-1.6.8.jar,
WEB-INF/lib/cdi-api-1.0.jar,
WEB-INF/lib/commons-cli-1.2.jar,
WEB-INF/lib/commons-io-2.3.jar,
WEB-INF/lib/commons-logging-1.1.1.jar,
WEB-INF/lib/freemarker-2.3.9.jar,
WEB-INF/lib/javax.inject-1.jar,
WEB-INF/lib/jboss-interceptor-api-1.1.jar,
WEB-INF/lib/jcl-over-slf4j-1.6.1.jar,
WEB-INF/lib/jettison-1.0.jar,
WEB-INF/lib/jsr250-api-1.0.jar,
WEB-INF/lib/validation-api-1.0.0.GA.jar

但是如果我这样做,将这个库添加为外部库,我的应用程序就可以工作(但是只是在Websphere上,这绝对不是我的意图)

按照@Dhanush Gopinath的建议,尝试将spring库保存在WEB-INF/lib文件夹中,然后将类加载器更改为parent last

要更改类加载器,请在域管理器控制台中转到

服务器>WebSphere应用程序服务器>服务器名称>服务器特定的应用程序设置

将类加载器策略更改为“Single”,并将类加载模式更改为“parent last”。检查这是否有帮助


Spring库不是包含WEB-INF/lib目录的WAR的一部分吗?这难道不能确保它在Tomcat和Websphere上无缝地工作吗?我的想法完全相同,但在Websphere上它并没有像预期的那样工作。我必须在服务器上创建很多共享库,并告诉我的应用程序应该使用这个libs。否则,我的应用程序中有很多冲突。但老实说,我第一次使用websphere。。也许有一种方法可以使它更有效地工作。。但据我所知,我几乎什么都试过了。唯一有效的方法是从我的web.jar中排除*.jar文件,并将它们作为单独加载的lib添加。我不明白为什么将Spring库放在war文件的web-INF/lib中不起作用。我们一直都在这样做,尽管不可否认,WAS 8.5尚未启用。当我们在那里测试时,它在8.0上运行,但在8.5?Thx中可能有些不同,我已经尝试过了,但后来我在XML DocumentBuilder中遇到了一些异常,JSF版本错误,这或多或少是一个永无止境的故事。。。这最终迫使我将图书馆外部化。我的应用程序以某种方式开始工作,但我确信一定有更好的方法来实现这一点(例如,我在pom.xml中有一个庞大的lib列表,它不应该实现,这不是它应该实现的方式,是吗?),但我现在将再试一次。。也许我以前做错了什么…在这里你可以看到错误。还有其他提示吗?非常感谢。您好,关于XML错误,请尝试从应用程序中删除所有与XML相关的API(xerces、xalan等)。您应该依赖WebSphere。关于JSF错误,可能是您使用的JSF版本与WebSphere默认版本不同。有一种方法可以在WebSphere中指定这一点,但不幸的是,我现在已经记不起如何做了