2011-09-01 6 views
0

Apache XML-RPC을 사용하는 자바 서버 백엔드는 PHP 응용 프로그램에서 서비스를 제공합니다 (나에게 묻지 마십시오. 이미 도착했을 때 이미 이렇게 구축되었습니다). unofficial XML-RPC introspection spec을 고수하기를 바랬습니다. 이론적으로, 아파치 XML-RPC는 지원이 있지만 example given on their page : Apache XML-RPC 서버 애플리케이션에서 인트로 스펙을 구현하는 방법은 무엇입니까?

public class MyXmlRpcServlet extends XmlRpcServlet { 
    protected XmlRpcHandlerMapping newXmlRpcHandlerMapping() 
     throws XmlRpcException { 
     PropertyHandlerMapping mapping = 
      (PropertyHandlerMapping) newXmlRpcHandlerMapping(); 
     XmlRpcSystemImpl.addSystemHandler(mapping); 
    } 
} 

는 컴파일되지 않습니다. 분명히 return 문이 누락되어 있으며 작성한 '매핑'을 반환하려고 시도했지만 서버 (재귀?)가 newXmlRpcHandlerMapping()에 대한 호출을 java.lang.StackOverflowError이 될 때까지 반복합니다.

질문 : 누구든지 이러한 응용 프로그램에 내성 검사를 추가하는 방법을 알고 있습니까? 이 예제를 수정하거나 작동하는 것을 제공하는 것은 대단 할 것입니다. 은 실제로이 아니기 때문에 (우리가 메서드 목록과 매개 변수를 생성하는 것이 좋을 것 같은) 사양 일 필요는 없지만 멋진 표준 인 것처럼 보입니다. -RPC. :-))

고마워요!

답변

1

동료의 조언 덕분에 대답이 나옵니다. 재정의 된 방법은 수퍼 클래스 버전이 아니라 자체 호출입니다. 여기에 고정 된 코드는 다음과 같습니다

public class MyXmlRpcServlet extends XmlRpcServlet { 
    @Override 
    protected XmlRpcHandlerMapping newXmlRpcHandlerMapping() 
     throws XmlRpcException { 
     PropertyHandlerMapping mapping = (PropertyHandlerMapping) super 
      .newXmlRpcHandlerMapping(); 
     XmlRpcSystemImpl.addSystemHandler(mapping); 
     return mapping; 
} 
} 

당신 후에는 반성의 메서드를 호출 할 수 있습니다이 버전으로의 web.xml에 XmlRpcServlet을 것을 추가하고 교체!

관련 문제