0

大家早上好,

我想知道是否可以外部化 Spring 库。我们有很多应用程序/Webservices,它们都使用相同的 Spring - libs,现在我们被迫将我们的应用程序部署在 Websphere (8.5.0.1) 服务器上。由于 Websphere 和 Classloading 与我之前所知道的一切都有些不同......

出色地 ...

思路如下:

创建一个包含所有 Springlibraries 的 mavenproject 并将此 jar 文件添加到服务器。我们想继续在 tomcat 服务器上进行开发,并在 websphere 上进行部署,而无需太多麻烦......

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

编辑:这就是我的 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 上,这绝对不是我的意图)

4

1 回答 1

1

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

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

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

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

在此处输入图像描述

于 2013-04-02T12:59:10.237 回答