我遇到了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