Web服务错误(google translate API) WSDL错误Java eclipse Axis2



我正在开发一个使用谷歌翻译api将英语翻译成法语的web服务项目。我已经成功地创建了服务器。但是,当我运行我的客户端,我得到一个错误。我在这个项目中使用了Java、Eclipse、Axis2和Tomcat。这是我的服务器代码:

package com.GTWS;
import com.gtranslate.Language;
import com.gtranslate.Translator;
public class GoogleTranslateClass {
    public String toFrench(String sentence){
        Translator translate = Translator.getInstance();
        String textF = translate.translate(sentence, Language.ENGLISH, Language.FRENCH);
        return textF;
    }

}

请注意,我使用的是一个外部的google translate api jar。然后创建web服务并使其运行。Eclipse创建如下WSDL文件:

<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions targetNamespace="http://GTWS.com" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:ns="http://GTWS.com" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation> Please Type your service description here </wsdl:documentation>

-<wsdl:types>

-<xs:schema targetNamespace="http://GTWS.com" elementFormDefault="qualified" attributeFormDefault="qualified">

-<xs:element name="toFrench">

-<xs:complexType>

-<xs:sequence>
<xs:element name="sentence" type="xs:string" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

-<xs:element name="toFrenchResponse">

-<xs:complexType>

-<xs:sequence>
<xs:element name="return" type="xs:string" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>

-<wsdl:message name="toFrenchRequest">
<wsdl:part name="parameters" element="ns:toFrench"/>
</wsdl:message>

-<wsdl:message name="toFrenchResponse">
<wsdl:part name="parameters" element="ns:toFrenchResponse"/>
</wsdl:message>

-<wsdl:portType name="GoogleTranslateClassPortType">

-<wsdl:operation name="toFrench">
<wsdl:input wsaw:Action="urn:toFrench" message="ns:toFrenchRequest"/>
<wsdl:output wsaw:Action="urn:toFrenchResponse" message="ns:toFrenchResponse"/>
</wsdl:operation>
</wsdl:portType>

-<wsdl:binding name="GoogleTranslateClassSoap11Binding" type="ns:GoogleTranslateClassPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

-<wsdl:operation name="toFrench">
<soap:operation style="document" soapAction="urn:toFrench"/>

-<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>

-<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

-<wsdl:binding name="GoogleTranslateClassSoap12Binding" type="ns:GoogleTranslateClassPortType">
<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

-<wsdl:operation name="toFrench">
<soap12:operation style="document" soapAction="urn:toFrench"/>

-<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>

-<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

-<wsdl:binding name="GoogleTranslateClassHttpBinding" type="ns:GoogleTranslateClassPortType">
<http:binding verb="POST"/>

-<wsdl:operation name="toFrench">
<http:operation location="toFrench"/>

-<wsdl:input>
<mime:content type="application/xml" part="parameters"/>
</wsdl:input>

-<wsdl:output>
<mime:content type="application/xml" part="parameters"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

-<wsdl:service name="GoogleTranslateClass">

-<wsdl:port name="GoogleTranslateClassHttpSoap11Endpoint" binding="ns:GoogleTranslateClassSoap11Binding">
<soap:address location="http://localhost:8080/GoogleTranslateWebServer/services/GoogleTranslateClass.GoogleTranslateClassHttpSoap11Endpoint/"/>
</wsdl:port>

-<wsdl:port name="GoogleTranslateClassHttpSoap12Endpoint" binding="ns:GoogleTranslateClassSoap12Binding">
<soap12:address location="http://localhost:8080/GoogleTranslateWebServer/services/GoogleTranslateClass.GoogleTranslateClassHttpSoap12Endpoint/"/>
</wsdl:port>

-<wsdl:port name="GoogleTranslateClassHttpEndpoint" binding="ns:GoogleTranslateClassHttpBinding">
<http:address location="http://localhost:8080/GoogleTranslateWebServer/services/GoogleTranslateClass.GoogleTranslateClassHttpEndpoint/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

然后我继续使用Axis在eclipse上创建web客户端,它创建代理文件。我创建了代理类的一个对象,并调用toFrench的方法,如下所示:

package com.GTWS;
import java.rmi.RemoteException;
import com.GTWS.*;
public class GTtester {
    public static void main(String[] args) throws RemoteException {
        // TODO Auto-generated method stub
        GoogleTranslateClassPortTypeProxy gtp = new GoogleTranslateClassPortTypeProxy();
        System.out.println(gtp.toFrench("hi there"));
    }
}

之后我得到错误:

Jun 12, 2014 11:11:43 PM org.apache.axis.utils.JavaUtils isAttachmentSupported
WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
Exception in thread "main" AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
 faultSubcode: 
 faultString: com/gtranslate/Translator
 faultActor: 
 faultNode: 
 faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:com/gtranslate/Translator
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1742)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2900)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at com.GTWS.GoogleTranslateClassSoap11BindingStub.toFrench(GoogleTranslateClassSoap11BindingStub.java:108)
    at com.GTWS.GoogleTranslateClassPortTypeProxy.toFrench(GoogleTranslateClassPortTypeProxy.java:50)
    at com.GTWS.GTtester.main(GTtester.java:10)
    {http://xml.apache.org/axis/}hostname:Karan
com/gtranslate/Translator
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1742)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2900)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at com.GTWS.GoogleTranslateClassSoap11BindingStub.toFrench(GoogleTranslateClassSoap11BindingStub.java:108)
    at com.GTWS.GoogleTranslateClassPortTypeProxy.toFrench(GoogleTranslateClassPortTypeProxy.java:50)
    at com.GTWS.GTtester.main(GTtester.java:10)

您需要将mail-1.4.jar和activation-1.1.jar添加到您的类路径(WEB-INF/lib)中。因为您在wsdl文件中有mime类型。

WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

最新更新