访问wsdl会出现如下问题
正确时String类型的参数描述应该为
<wsdl:message name="approveResponse">
<wsdl:part name="approveReturn" type="xsd:string">
</wsdl:part>
</wsdl:message>
其中type为xsd:string
错误时String类型的参数描述为
<wsdl:message name="approveResponse">
<wsdl:part name="approveReturn" type="soapenc:string">
</wsdl:part>
</wsdl:message>
其中type为soapenc:string
tomcat刚启动的时候没有问题,是正确的,对方调用几次以后(不确定次数),String类型参数描述就会由xsd:string变成soapenc:string,导致接口无法调用
我们自己使用webService测试工具无法重现此问题
正确时String类型的参数描述应该为
<wsdl:message name="approveResponse">
<wsdl:part name="approveReturn" type="xsd:string">
</wsdl:part>
</wsdl:message>
其中type为xsd:string
错误时String类型的参数描述为
<wsdl:message name="approveResponse">
<wsdl:part name="approveReturn" type="soapenc:string">
</wsdl:part>
</wsdl:message>
其中type为soapenc:string
tomcat刚启动的时候没有问题,是正确的,对方调用几次以后(不确定次数),String类型参数描述就会由xsd:string变成soapenc:string,导致接口无法调用
我们自己使用webService测试工具无法重现此问题
解决方案 »
- checkbox问题
- 如何利用JAVA实现类似于股市行情的图?
- servlet生命周期的一个问题
- struts2+hibernate+spring插入数据库乱码问题?
- json 一加都报错
- 麻烦各位热心的大虾帮帮我有关在Jsp中使用日期控件出现的问题!
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
- $CALTALINA_HOME/conf/server.xml 中并没有<Context>
- 请问JSP如何实现asp中split函数的功能?
- mian框架服务假死
- 在MyEclipse中可以运行正常,但在外部的Tomcat运行,就报空指针异常
- java后台读取xml
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="disablePrettyXML" value="true"/>
<parameter name="adminPassword" value="admin"/>
<parameter name="attachments.Directory" value="E:\apache-tomcat-6.0.14\webapps\axis\WEB-INF\attachments"/>
<parameter name="dotNetSoapEncFix" value="false"/>
<parameter name="enableNamespacePrefixOptimization" value="false"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
<parameter name="sendXsiTypes" value="true"/>
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="session"/>
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="request"/>
<parameter name="extension" value=".jwr"/>
</handler>
</requestFlow>
</globalConfiguration>
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<service name="MyWebServiceImpl" provider="java:RPC">
<parameter name="allowedMethods" value="sayHello"/>
<parameter name="scope" value="request"/>
<parameter name="className" value="com.ultrapower.itsm.server.MyWebServiceImpl"/>
</service>
<service name="Change" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="request"/>
<parameter name="className" value="com.ultrapower.itsm.server.Change"/>
</service>
<service name="Incident" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="request"/>
<parameter name="className" value="com.ultrapower.itsm.server.Incident"/>
</service>
<service name="AdminService" provider="java:MSG">
<parameter name="allowedMethods" value="AdminService"/>
<parameter name="enableRemoteAdmin" value="false"/>
<parameter name="className" value="org.apache.axis.utils.Admin"/>
<namespace>http://xml.apache.org/axis/wsdd/</namespace>
</service>
<service name="Version" provider="java:RPC">
<parameter name="allowedMethods" value="getVersion"/>
<parameter name="className" value="org.apache.axis.Version"/>
</service>
<service name="ServiceRequest" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="request"/>
<parameter name="className" value="com.ultrapower.itsm.server.ServiceRequest"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
</requestFlow>
</transport>
<transport name="local">
<responseFlow>
<handler type="LocalResponder"/>
</responseFlow>
</transport>
</deployment>
楼上这个参数应该是
<parameter name="dotNetSoapEncFix" value="true"/>
dotNetSoapEncFix Set this flag to true to turn on a preference for the XML Schema (xsd) types in the Axis engine. This improved interop with .NET. In particular, .NET seems to have problems accepting SOAP encoded types (soapenc) in arrays. Due to bugs in the Axis 1.1 type mapping system, Axis generally perferred the schema types. Axis 1.2 now correctly uses the SOAP encoded types when it is using SOAP encoding for a service. See JAX-RPC 1.1, section 4.2.1. Note: You can also set this flag by setting the static property on the TypeMappingImpl class:
TypeMappingImpl.dotnet_soapenc_bugfix = true;