WCF服务,Java JApplet客户端,传输错误405

时间:2009-11-10 01:13:29

标签: java wcf wcf-interoperability

我遇到了WCF服务和Java客户端的问题,我会尽量提供尽可能多的信息,感谢您的时间。

服务器的端点是BasicHttpBinding,我尝试将服务器托管为Windows服务并在IIS中但没有任何改变。 奇怪的是,如果我使用一个简单的类,客户端工作得很好,在我将类切换到JApplet的那一刻我得到了提到的问题。

我正在使用Eclipse作为IDE,我尝试使用Axis和Metro来生成具有相同错误结果的存根。

以下是一切工作正常的Java类的示例

public class TestSoaMetro {
    public String TestMethod(){
        String result = null;

        IDigitalSignatureService aa = new DigitalSignatureService().getBasicHttpBindingEndpoint();
        try {
            result = aa.getData("1", "id002962");
        } catch (IDigitalSignatureServiceGetDataArgumentExceptionFaultFaultMessage e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IDigitalSignatureServiceGetDataInvalidOperationExceptionFaultFaultMessage e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }
}

以下是我收到错误的JApplet示例:

public class TestSoaMetroApplet extends JApplet {
    public void init() {
        Container content = getContentPane();
        content.setBackground(Color.white);
        content.setLayout(new FlowLayout());
        String result= this.TestMethod();
        JLabel label = new JLabel(result);
        content.add(label);
    }

    public String TestMethod(){
        String result = null;
        IDigitalSignatureService aa = null;
        try {
            aa = new DigitalSignatureService().getBasicHttpBindingEndpoint();
            result= aa.getData("1", "id002962");
        } catch (IDigitalSignatureServiceGetDataArgumentExceptionFaultFaultMessage e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IDigitalSignatureServiceGetDataInvalidOperationExceptionFaultFaultMessage e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }
}

在Applet加载的那一刻我得到错误,是完全相同的调用,所以我不明白为什么我使用Applet获得异常。我也尝试从Silverlight客户端调用它,我得到一个安全异常,这是我发现有关clientaccesspolicy.xml和crossdomain.xml的地方,我在服务中添加了clientaccesspolicy.xml,Silverlight Client工作得很好,所以我决定尝试crossdomain.xml而没有,Applet仍然无法正常工作。 我会把堆栈跟踪放在最后,感谢您的所有时间。

Juan Zamudio

javax.xml.ws.WebServiceException: org.apache.axis2.AxisFault: Transport error: 405 Error: Method not allowed
at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:175)
at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70)
at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:128)
at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:559)
at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.doInvoke(AxisInvocationController.java:118)
at org.apache.axis2.jaxws.core.controller.impl.InvocationControllerImpl.invoke(InvocationControllerImpl.java:82)
at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:317)
at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:159)
at $Proxy12.getData(Unknown Source)
at TestSoaMetroApplet.TestMethod(TestSoaMetroApplet.java:28)
at TestSoaMetroApplet.init(TestSoaMetroApplet.java:19)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.axis2.AxisFault: Transport error: 405 Error: Method not allowed
at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:295)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:190)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:389)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:222)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:554)
... 9 more

1 个答案:

答案 0 :(得分:0)

该异常显然是由HTTP 405错误引起的,因此它是服务器,它决定不允许客户端调用该方法。如果它是applet或独立的Java应用程序应该不重要。 applet和独立应用程序是否可能从不同的IP访问服务器,并且服务器配置为允许从独立应用程序使用的IP进行访问,但拒绝从applet使用的IP进行访问?