Java web服务客户端Weblogic 12.2.1和发布服务器Weblogic 12.1.2之间的问题

Java web服务客户端Weblogic 12.2.1和发布服务器Weblogic 12.1.2之间的问题,java,web-services,weblogic12c,Java,Web Services,Weblogic12c,我们面临着一个新的Weblogic(12.2.1)与发布服务器(Weblogic 12.1.3)之间的集成问题,其中我们有一个客户端jax ws 我的Web服务客户端(WL 12.2.1)调用WL 12.1.3上发布的Web服务,但我们遇到以下错误: javax.xml.ws.webservice异常:旧格式工作区标头被禁用。 javax.xml.ws.WebServiceException:旧格式工作区标头已禁用。 位于weblogic.wsee.jaxws.workcontext.WorkC

我们面临着一个新的Weblogic(12.2.1)与发布服务器(Weblogic 12.1.3)之间的集成问题,其中我们有一个客户端jax ws

我的Web服务客户端(WL 12.2.1)调用WL 12.1.3上发布的Web服务,但我们遇到以下错误:

javax.xml.ws.webservice异常:旧格式工作区标头被禁用。

javax.xml.ws.WebServiceException:旧格式工作区标头已禁用。
位于weblogic.wsee.jaxws.workcontext.WorkContextClientTube.processResponse(WorkContextClientTube.java:61)
位于com.sun.xml.ws.api.pipe.Fiber.\uu doRun(Fiber.java:1147)
位于com.sun.xml.ws.api.pipe.Fiber.\u-doRun(Fiber.java:1050)
位于com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
位于com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
位于com.sun.xml.ws.client.Stub.process(Stub.java:463)
位于com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)
位于com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
位于com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)
位于com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)
位于com.sun.proxy.$Proxy948.consulta(未知来源)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:497)
位于weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:147)
位于com.sun.proxy.$Proxy949.consulta(未知来源)
我们截获了我们正在发送的信封请求(通过Eclipse TCP/IP Monitor),我们看到了下面的头块:


RO0ABxDUABH3ZWJSB2DPYY5HCHAUD3NHDXRLBNRPY2EAAADWAAI3DLMXVZ2LJLNDVCMTHCMVHLLN0CMLUZ1DVCMTDB250ZXH0AASXLJIUMTUTMDAZMQAA
通过操纵WorkContextMap,我们可以清理并不发送头块:

publicstaticvoid cleanuwworkcontext(){
试一试{
WorkContextMap rc=(WorkContextMap)
新建InitialContext().lookup(“java:comp/WorkContextMap”);
如果(rc!=null){
ArrayListlista_para_remover=新建ArrayList();
如果(rc.keys()!=null){
for(迭代器keys=rc.keys();keys.hasNext();){
String s=(String)keys.next();
log.info(“发现”+s+“-”+rc.get(s));
如果(s.startsWith(“weblogic.app”)){
日志信息(“删除”+s);
清单a_para_移除器添加;
}
}
for(IteratorIterator=lista_para_remover.Iterator();Iterator.hasNext();){
字符串=(字符串)迭代器。下一步();
移除(字符串);
}
}
}
info(“RC为NULL?”+(RC==NULL));
}捕获(例外e){
日志错误(“异常:”,e);
e、 printStackTrace();
}
}
清理工作上下文并发送没有标题的信封后,我们仍然会收到相同的错误(旧格式…

通过Eclipse TCP/IP监视器,我们可以看到信封响应,如下所示:


weblogic.app.sgrcioiaws
214
weblogic.workarea.StringWorkContext
20170504054331
weblogic.app.eori
214
weblogic.workarea.StringWorkContext
20170530052023
... 一些数据。。。

但在此之后(出于某种原因),我们得到了“旧格式…”例外

问题可能是报头响应块?可能是这个块版本(xmlns:work=”http://bea.com/2004/06/soap/workarea/“)不被更新的Weblogic接受,比如我们的12.2.1版本

谢谢你们的关注,伙计们

ps:只有通过WL12.2.1上部署的代码调用Web服务时,如果通过简单的java应用程序或soapUI调用Web服务,则不会出现此错误。

更新(weblogic application.xml)


org.apache.xerces.jaxp.SAXParserFactoryImpl
weblogic.xml.jaxp.WebLogicDocumentBuilderFactory
org.apache.xalan.processor.TransformerFactoryImpl
webapp.encoding.default
UTF-8
org.springframework*
org.apache.xerces.parsers*
org.apache.xalan*

weblogic的xml解析器/soap jar文件中最可能出现的问题是,新服务器上更新的xml解析器/soap jar文件和旧服务器上生成的xml没有规范。最好是尝试编辑ejb xml,使用war/ear JAR中的JAR覆盖服务器内置的任何JAR。如果可能,使用tagHi,@user18896654353,我插入了一个weblogic-application.xml更新。是这样的吗?正确,package.names.here.*我已经这样做了,但仍然有错误。