Jar 在我的一个应用程序中看到Websphere类而不是类';水罐

Jar 在我的一个应用程序中看到Websphere类而不是类';水罐,jar,configuration,websphere,classloader,Jar,Configuration,Websphere,Classloader,我遇到了类加载器/jar问题。WebSphere7,JDK6。 当代码在简单、独立的Java类中运行时,与Web服务对话可以很好地工作 ((WSBindingProvider) docManClient).setOutboundHeaders(Headers.create(otAuthElement)); 在调试器中,docManClient对象具有以下toString(): 类路径包括jaxws-rt-2.1.4.jar 当代码在Websphere内部运行时,强制转换失败 ((WS

我遇到了类加载器/jar问题。WebSphere7,JDK6。 当代码在简单、独立的Java类中运行时,与Web服务对话可以很好地工作

  ((WSBindingProvider) docManClient).setOutboundHeaders(Headers.create(otAuthElement)); 
在调试器中,docManClient对象具有以下toString():

类路径包括jaxws-rt-2.1.4.jar

当代码在Websphere内部运行时,强制转换失败

  ((WSBindingProvider) docManClient).setOutboundHeaders(Headers.create(otAuthElement)); 
  java.lang.ClassCastException: com.sun.proxy.$Proxy484 incompatible with com.sun.xml.ws.developer.WSBindingProvider
在调试器中,docManClient对象具有以下toString():

此jar仅在Websphere land中,不是我的项目的.ear文件的一部分:

  C:\dev_tools\server\IBM\WebSphere\AppServer\plugins\org.apache.axis2.jar
我试图更改应用程序配置,以使其自己的类优于Websphere的类。 我上次使用wsadim工具更改为PARENT_,但这对观察到的行为没有影响:

 set dep [$AdminConfig getid /Deployment:my-ear/]
 set depObject [$AdminConfig showAttribute $dep deployedObject]
 set classldr [$AdminConfig showAttribute $depObject classloader]
 $AdminConfig showall $classldr
 $AdminConfig modify $classldr {{mode PARENT_LAST}}
 $AdminConfig save
 $AdminConfig showall $classldr
该应用程序是一个.ear,其中包含一个.war


稍后添加编辑:我不清楚jax-ws-rt.jar和axis2.jar之间的关系。axis2.jar并不是jax-ws-rt.jar的替代品:当我切换到axis2.jar时,代码不再编译。

另一种先找到自己类的方法是将重叠的jar放入websphere(独立的)共享库中。看起来您更改了应用程序类加载器,但是您还需要将模块类加载器更改为parent last。我认为这可以在控制台中完成。还有一个jvm属性,disablejaxwsengine,或者类似的东西,可以帮助您摆脱WebSphere的jax ws impl。如果您只是使用普通jax-ws API,请尝试从类路径中完全删除
jaxws-rt-2.1.4.jar
,因为WebSphere已经提供了jax-ws引擎。否则,您将不得不禁用内部JAX-WS引擎-检查此项。另一种首先查找您自己的类的方法是将重叠的JAR放入websphere(隔离的)共享库中。看起来您更改了应用程序类加载器,但您还需要最后将模块类加载器更改为父类。我认为这可以在控制台中完成。还有一个jvm属性,disablejaxwsengine,或者类似的东西,可以帮助您摆脱WebSphere的jax ws impl。如果您只是使用普通jax-ws API,请尝试从类路径中完全删除
jaxws-rt-2.1.4.jar
,因为WebSphere已经提供了jax-ws引擎。否则,您必须禁用内部JAX-WS引擎-请检查此项
  C:\dev_tools\server\IBM\WebSphere\AppServer\plugins\org.apache.axis2.jar
 set dep [$AdminConfig getid /Deployment:my-ear/]
 set depObject [$AdminConfig showAttribute $dep deployedObject]
 set classldr [$AdminConfig showAttribute $depObject classloader]
 $AdminConfig showall $classldr
 $AdminConfig modify $classldr {{mode PARENT_LAST}}
 $AdminConfig save
 $AdminConfig showall $classldr