Axis2 wsdl2java创建了stub,将byte []转换为DataHandler

时间:2014-03-06 22:15:59

标签: java web-services axis2 wsdl2java datahandler

我的任务是为现有的Axis2 1.5.1 Web服务创建一个Java客户端,我们一直在使用c#客户端。我们在几个位置使用字节数组,尤其是会话句柄,我遇到了创建存根的问题。

虽然wsdl2c正在创建一个webservice存根,它将byte []保持为byte [],但Java存根正在将byte []转换为DataHandler。

有没有办法改变wsdl2java的映射方式?或者我错过了一些重要的东西。

所以现在我得到byte [] - > xs:base64Binary - > DataHandler的。我想要的是byte [] - > xs:base64Binary - >字节[]

我使用-uw和-or参数使用wsdl2java生成了存根。

wsdl2java -uri http://mycomputer:myport/my-webservices/services/TheServices?wsdl -uw -or

原始的java方法看起来像这样

public byte[] newSession(byte[] domainenc, byte[] userenc, byte[] passenc) throws SOAPException {

wsdl如下

<xs:element name="newSession">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="domainenc" nillable="true" type="xs:base64Binary"/>
<xs:element minOccurs="0" name="userenc" nillable="true" type="xs:base64Binary"/>
<xs:element minOccurs="0" name="passenc" nillable="true" type="xs:base64Binary"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="newSessionResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="xs:base64Binary"/>
</xs:sequence>
</xs:complexType>
</xs:element>

对于C#客户端,wsdl2C携带参数并将类型作为byte []返回,这就是我想要的方式

[return: System.Xml.Serialization.XmlElementAttribute("return", DataType="base64Binary", IsNullable=true)]
        public byte[] newSession([System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary", IsNullable=true)] byte[] domainenc, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary", IsNullable=true)] byte[] userenc, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary", IsNullable=true)] byte[] passenc) {
            object[] results = this.Invoke("newSession", new object[] {
                        domainenc,
                        userenc,
                        passenc});
            return ((byte[])(results[0]));
        }

然而,使用wsdl2java,它将base64binary转换为数据处理程序。

public  javax.activation.DataHandler newSession(javax.activation.DataHandler domainenc18,javax.activation.DataHandler userenc19,javax.activation.DataHandler passenc20) throws java.rmi.RemoteException

感谢任何帮助。

0 个答案:

没有答案