【问题标题】:Web service Error (google translate API) WSDL error Java Eclipe Axis2Web 服务错误 (google translate API) WSDL 错误 Java Eclip Axis2
【发布时间】:2023-03-16 02:29:01
【问题描述】:

我正在开发一个使用 google translate api 将英语翻译成法语的网络服务的项目。我已经成功地创建了服务器。但是当我运行我的客户端时,我遇到了一个错误。我在项目中使用 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;
    }


}

请注意,我为此目的使用了外部谷歌翻译 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)

【问题讨论】:

    标签: java web-services wsdl axis2 google-translate


    【解决方案1】:

    您需要将 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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多