java - 外部化 Spring 库 Web 应用程序

标签 java spring websphere tomcat7 static-libraries

大家早上好,

我想知道是否可以外部化 Spring 库。我们有很多应用程序/Web 服务,它们都使用相同的 Spring - libs,现在我们被迫将应用程序部署在 Websphere (8.5.0.1) 服务器上。由于 Websphere 和类加载与我之前了解的其他内容有点不同......

嗯...

想法如下:

创建一个包含所有 Spring 库的 maven 项目,并将此 jar 文件添加到服务器。我们希望继续在 tomcat 服务器上进行开发,然后将其部署在 websphere 上,而不需要太多麻烦...

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

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

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <packagingExcludes>WEB-INF/lib/hibernate*.jar,
                        WEB-INF/lib/*spring*.jar,
                        WEB-INF/lib/xml-apis*.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-transaction-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-connector-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
                    </packagingExcludes>
                </configuration>
            </plugin>

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

最佳答案

尝试按照 @Dhanush Gopinath 的建议将 spring 库保留在 WEB-INF/lib 文件夹中,然后将类加载器更改为最后一个父级加载器。

要更改类加载器,请在域管理器控制台中进行更改。

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

将类加载器策略更改为“单一”,并将类加载模式更改为“父级最后”。检查这是否有帮助。

enter image description here

关于java - 外部化 Spring 库 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759404/

相关文章:

java - 在 Spring 中允许并发的正确 Bean 的 proxyMode 是什么?

eclipse - 您如何将 Eclipse 连接到托管在远程服务器上的 WebSphere Application 服务器?

java - IBMRestServlet 类的链接已损坏 - RESTFul Web 服务

java - 如何使用Digester将XML解析为Java对象

一组字符串的Java对象内存大小

java - servlet 代码结构/模式思路?写作回应

java - session失效后request.getUserPrincipal()仍然不为null

java - 如何使用 Oracle Coherence 在分布式系统上生成唯一 id?

如果发生故障,Spring Kafka自动提交偏移

spring - 如何在 Spring 中从 RabbitMQ 正确获取所有队列消息?