2010-01-20 3 views
1

우리는 제어를 위해 웹 서비스를 실행하는 물리적 장치가 크고 이러한 장치를 제어하기위한 중앙 제어 시스템을 갖추고 있습니다. 나는 제어 장치를 테스트하기 위해 그러한 물리적 장치를 대신 할 필요가있다. 단일 컴퓨터에서 하나 이상의 테스트 장치 인스턴스를 실행하는 방법은 어떻게됩니까? 돌로 쓰여진 wsdl로 SOAP에서 사용 된 프로토콜. webservice 이외에 각 테스트 장치에는 상태를 모니터링하고 이벤트를 생성하는 웹 서버가 필요합니다.하나의 컴퓨터에서 다수의 웹 서비스를 테스트하십시오.

내 첫 번째 접근 방식은 부두를 내장하고 webservices 용 axis2를 사용하는 것이지만, 나는 그 비행을하는데 약간의 문제가 있습니다. 나는 webService로 작업하는 axis2 SimpleHttpServer를 얻을 수 있었지만, SimpleHttpServer가 서블릿을 실행 시키거나 혼자서 내버려 둘 수는 없다고 말할 수있다. 제가 누락 된 더 나은 접근법이 있습니까?

프록시 서버가 포트 수를 수신하고 웹 서비스에 대한 요청을 중앙 웹 서비스로 전달하는 것을 고려했지만 추가 매개 변수가 요청을 보낸 포트를 알려주지 만 wsdl은 돌로 쓰기 때문에 이 매개 변수를 따라 가라.

편집 : Netbeans을 사용하여 나를위한 웹 서비스를 생성합니다. 매력으로 작동하지만 내 프로젝트에는 충분하지 않습니다. 어떤 이유로 wsdport에서 wsimport가 질식합니다. Netbeans가 번들 된 Glassfish 서버에 배포하는 방법을 이해할 수 없지만 생성 된 dist/my-project.war을 tomcat에 놓으면 웹 서비스가 작동하지 않습니다. web.xml에 표시되는 내용이 훨씬 적습니다. 내가 뭘 놓치고 있니?

답변

0

좋아요. 해결책을 찾았습니다. 글래스 피쉬를 사용할 수 있습니다. 그런 다음 동일한 웹 응용 프로그램을 다른 이름으로 여러 번 배포합니다. 그런 다음 글래스 피쉬 (glassfish)로 만든 작은 프록시를 만들어 여러 포트를 수신 한 다음 글래스 피시를 실행중인 인스턴스 중 하나에 요청을 변환합니다.

0

Axis2는 서블릿 컨테이너로 사용되지 않으므로 SimpleHttpServer을 사용하면 도움이되지 않습니다.

그러나 부두는 완전한 기능을 갖춘 서블릿 컨테이너입니다. 그것이 효과를 발휘하게하려면 부두로 전쟁을 실행해야합니다.

나는 부두 전문가가 아니지만,이 작업을해야합니다 (또는 다른 servlet container하지만, 부두 완벽하게 괜찮습니다) :

Server server = new Server(8080); 
Context root = new Context(server, "/", Context.SESSIONS); 
root.addServlet(new ServletHolder(yourServletInstance), "/*"); 
server.start(); 

(Jetty Wiki에서 촬영)

+0

그럼 부두에서 웹 서비스를 실행하는 데 필요한 단계는 무엇입니까 –

+0

내 대답이 업데이트되었습니다. –

+0

YourServletInstance는 어디에서 비롯되며 어떤 도구를 사용해야합니까? –

0

인식하는 것이 당신이 경우 경로 SOCKS 프록시를 통한 네트워크 요청은 SOCKS 프록시의 하드 코드 된 이름과 포트조차도 근본적으로 원하는대로 리디렉션 할 수 있습니다.

+0

제어 시스템이 SOCKS를 지원하지 않으며 다른 시스템에서 구현됩니다. 공급 업체 그래서 그게 아니에요. –

+0

Schade. 그런 다음 트래픽을 프록시 할 수있는 제어 시스템 앞에 투명한 프록시를 두는 것을 고려하십시오. http://www.faqs.org/docs/Linux-mini/TransparentProxy.html#s2 –

+0

Thorbjørn, Jetty에 프록시 서버를 구현했습니다. 그런 다음 동일한 컴퓨터에서 동일한 웹 서비스의 여러 인스턴스를 실행하는 방법을 모르기 때문에 문제가 해결되지 않는다는 것을 깨달았습니다. –

관련 문제