Tomcat - Axis 1.4 - org.xml.sax.SAXParseException; lineNumber:x; columnNumber:y;

在WebLogic中,我们使用weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask,有蚂蚁,从WSDL文件生成Web服务客户端罐子。 在Tomcat中字符引用“&#

Tomcat - Axis 1.4 - org.xml.sax.SAXParseException; lineNumber:x; columnNumber:y;</p> <p>在WebLogic中,我们使用<code>weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask</code>,有蚂蚁,从WSDL文件生成Web服务客户端罐子。 在Tomcat中字符引用“&#

问题描述:

我们正在从Weblogic的移动到Tomcat,我们正在尝试使用Axis 1.4 Maven中,产生相同的Web服务客户Tomcat - Axis 1.4 - org.xml.sax.SAXParseException; lineNumber:x; columnNumber:y;</p> <p>在WebLogic中,我们使用<code>weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask</code>,有蚂蚁,从WSDL文件生成Web服务客户端罐子。 在Tomcat中字符引用“&#

一个web服务的调用与下面的示例响应:

HTTP/1.1 200 OK 
Content-Type: text/xml; charset=utf-8 
Server: Microsoft-IIS/7.5 
X-Powered-By: ASP.NET 
Date: Tue, 04 Jul 2017 20:35:37 GMT 
Connection: close 
Content-Length: 898 

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body> 
<MyRequestResponse xmlns="http://tempuri.org/"> 
<MyRequestResult>~BLDSQPQP(........)26787&#x2;00000 000 </MyRequestResult> 
</MyRequestResponse> 
</s:Body></s:Envelope> 

然而,我们得到一个运行时异常,当我们调用/调用所产生的Web服务客户端轴1.4:

org.xml.sax.SAXParseException; lineNumber:x; columnNumber:y;字符引用“&#

看来,Axis的SAX解析器是不是期待着与&后#XML实体。 不幸的是,我们不能改变web服务响应的行为/内容。

是否有任何方式,以解决客户端上的这一问题,例如,禁用XML验证或使其了解这些实体

代码调用客户端:

service = new BrowserServiceLocator(); 
service.setEndpointAddress("HttpWebService", webserviceUrl); 
IBrowserService myService = (IBrowserService) service.getHttpWebService(); 
myResponse = myService.myRequest(object, verb, user.getMyUser(), user.getCenter(), inputData); 

注:我们目前不能因为我们使用的RPC编码的WSDL更新到轴2。

编辑 - 请看下面Weblogic是如何处理这个角色的。 (使用的Weblogic) In Eclipse Debugger

在记事本++

在Eclipse调试器(响应使用Weblogic如上检索) In Notepad

+2

轴的行为是正确的这里,看到https://*.com/a/28152666/180100。另请参见https://issues.apache.org/jira/browse/AXIS-2025 –

+0

@RC。我了解Axis的行为在这里可能是正确的。不过,我想还是可以(如果需要的话为1.1)来解析XML,并使其了解实体(因为它们是有效的,也)。有什么办法可以做到吗?谢谢。 – Nuno

+0

我可能会通过使用一些请求来获取内容(HttpClient),用一些常规xml解析器(XStream)现在有效的xml来替换错误的内容(或'

Tomcat是能够处理的那些种类的字符,它的轴线XML解析器不能。

尝试使用过滤器拦截响应和替换错误的字符与空间,以保持响应结构如果这对你很重要: How to write response filter?

Replace response body using filter

显然,如果可能的话,修复这种服务会在响应中发送您的应用中的那些字符。