2011-03-20 30 views
2

我有一个加载库的Spring 3应用程序。该库由JAX-WS生成的Java绑定组成。当库包含在WAR文件中并部署到Tomcat时,应用程序运行良好。Spring 3应用程序实例化Tomcat提供的类

然而,当我们搬到库到Tomcat(CATALINA_HOME/lib中)春季是没有长能够在库中实例化类由于看起来像一个类加载器的问题:

Caused by: java.lang.IllegalArgumentException: interface com.sun.xml.ws.developer.WSBindingProvider is not visible from class loader 
at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353) ~[na:1.6.0_24] 
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581) ~[na:1.6.0_24] 
at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:604) ~[jaxws-rt-2.2.1.jar:2.2.1] 
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:344) ~[jaxws-rt-2.2.1.jar:2.2.1] 
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:326) ~[jaxws-rt-2.2.1.jar:2.2.1] 
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:308) ~[jaxws-rt-2.2.1.jar:2.2.1] 
at javax.xml.ws.Service.getPort(Service.java:92) ~[na:1.6.0_24] 
at org.ghc.webservices.element.services.stubs.Express.getExpressSoap12(Express.java:94) ~[element-soap-libs-dev-1.16.jar:na] 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_24] 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_24] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_24] 
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_24] 
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:145) ~[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] 

不幸的是,我们需要保持这种库在应用程序外部。

我很想知道如何解决此问题,并希望得到任何建议。

- 谢谢!

+0

还尝试将库.jar放置在$ CATALINA_HOME/endorsed下,但结果与最初描述的相同。 – node42 2011-03-21 19:16:26

回答

0

是否确定放置该库的目录在类路径中可用?我们通常将我们的外部库放在常见的\ lib中,像这样。

%CATALINA_HOME%\common\lib\<yourjar>.jar 

如果这没有工作,那么尝试明确追加你的罐子,在类路径中catalina.bat中文件中设置。

set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\<yourjar>.jar 
相关问题