我遇到了WCF服务和Java客户端的问题,我会尽可能地提供尽可能多的信息,谢谢您的时间。WCF服务,Java JApplet客户端,传输错误405
该服务器的端点是BasicHttpBinding,我试图承载服务器作为Windows服务和在IIS中,但没有任何更改。 奇怪的是,如果我使用一个简单的类,那么当我将类切换到JApplet时,客户端会很好地工作,我会遇到上述问题。
我正在使用Eclipse作为IDE,我尝试使用Axis和Metro来生成具有相同错误结果的存根。
这里是一切工作
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;
}
}
的Java类的一个实例下面是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仍然无法正常工作。 我会把堆栈跟踪结束,谢谢你的时间。
涓萨穆迪奥
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
现在所有客户端(独立和小程序)具有相同的IP,这意味着我的调试机器,这就是为什么我这么奇怪。 – 2009-11-10 01:58:19
也许applet使用浏览器的代理配置,以便服务器看到不同的客户端。也许(很可能)你会在服务器日志中找到拒绝请求的详细解释。宇宙射线可能会改变服务器CPU寄存器中的位,从而导致请求失败。如果你没有提供任何详细的信息,那么别人就不可能讨论你的问题。 – jarnbjo 2009-11-10 11:59:27
你没有要求更多的信息,但无论如何,它的东西这样的东西,远离这种类型的网站。 (顺便说一句,405错误与安全无关), – 2009-11-10 17:08:09