2009-11-10 4 views
0

WCF 서비스 및 Java 클라이언트에 문제가 있습니다. 가능한 한 많은 정보를 제공하려고 노력합니다. 감사드립니다.WCF 서비스, Java JApplet 클라이언트, 전송 오류 405

서버의 끝점은 BasicHttpBinding입니다. 서버를 Windows 서비스 및 IIS로 호스팅했지만 아무 것도 변경되지 않았습니다. 이상한 점은 간단한 클래스를 사용하면 클라이언트가 훌륭하게 작동한다는 것입니다. 클래스를 JApplet으로 전환하면 문제가 발생합니다.

Eclipse를 IDE로 사용하고 있는데, Axis와 Metro를 사용하여 동일한 결과가 잘못된 스텁을 생성했습니다. 애플릿로드 나는 순간

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; 
    } 
} 

: 여기

내가 오류를 얻을 경우 여기 JApplet에의 예는 모든

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; 
    } 
} 

작동하는 자바 클래스의 예입니다 오류가 발생하면 정확히 동일한 호출이므로 애플릿을 사용하여 예외가 발생하는 이유를 알 수 없습니다. 나는 또한 Silverlight 클라이언트에서 이것을 호출하려고 시도했다. 보안 예외가 발생했다. clientaccesspolicy.xml과 crossdomain.xml에 대해 알아 낸 부분이다. clientaccesspolicy.xml을 서비스에 추가했기 때문에 Silverlight Client는 훌륭하게 작동한다. crossdomain.xml을 시도해보기로 결정했지만 애플릿은 여전히 ​​작동하지 않습니다. 마지막에 스택 추적을 넣을 예정입니다. 시간 내 주셔서 감사합니다.

후안 자무 디오

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 

답변

0

예외는 분명히 HTTP 405 오류로 인한 때문에 클라이언트가 메소드를 호출 할 수 없습니다 것을 결정하는 서버입니다. 애플릿 또는 독립형 Java 응용 프로그램이 중요하지 않아야합니다. 애플릿과 독립 실행 형 응용 프로그램이 서로 다른 IP에서 서버에 액세스하고 서버가 독립 실행 형 응용 프로그램에서 사용하는 IP에서 액세스 할 수 있도록 구성되었지만 애플릿에서 사용하는 IP로부터의 액세스를 거부합니까?

+0

지금 모든 클라이언트 (독립 실행 형 및 애플릿)는 동일한 디버그 시스템을 의미하는 동일한 IP를 가지고 있습니다. 그래서 저에게 이상합니다. –

+0

아마도 애플릿이 브라우저의 프록시 구성을 사용하여 서버가 다른 클라이언트를 볼 수 있습니다. 아마도 (아마도) 서버 로그에서 요청이 거부 된 이유에 대한 자세한 설명을 볼 수 있습니다. 아마도 우주 광선이 서버 CPU 레지스터의 비트를 변경하기 때문에 요청이 실패합니다. 더 자세한 정보를 제공하지 않으면 누군가가 귀하의 문제를 예측하는 것이 불가능합니다. – jarnbjo

+0

당신은 더 많은 정보를 요구하지 않았지만 어쨌든 고맙게도, 이런 종류의 사이트를 막을 수있는 물건. (405 오류는 보안과 관련이 없습니다.) –