2010-01-18 3 views
11

간단한 SOAP 웹 서비스를 만들고 있습니다. Tomcat 웹 서비스에서 실행되는지 확인해야합니다. JAX-WS (참조 코드)와이를 구현하려고Java : 끝점을 사용하여 Tomcat 서버에 웹 서비스 게시

메신저

내 질문은 다음 Endpoint.publish이 호스트 또는 서버의 미니 글래스 피쉬 종류 할 수있는 Tomcat 서버를 사용합니까?

대신 UnicastRemoveObject 또는 비슷한 것을 확장해야합니까?

이상적으로 .WAR에 패키지 될 수 있고 디렉토리에 떨어 뜨리고 그냥 작동 할 수 있습니다.

포트가 이미 사용 중이라고 나와 있기 때문에 설치된 Tomcat 서버에서 작동하지 않는 것 같습니다.

: 나는이 설치 tomcat6 패키지 우분투 카르마를 사용하고, 또한 내 사용자 나던 내가이 질문은

샘플 코드 충분히 명확 희망 8080

에서 실행중인 바람둥이에 게시 할 수있는 권한이 될 수있다

@WebService 
public class UserAttributes { 
    public static void main(String[] args) { 
     UserAttributes instance = new UserAttributes(); 
     Endpoint.publish("http://localhost:8082/WebServices/userattributes", 
      instance); 
    } 

    public string Hello() { 
     return "Hello World"; 
    } 
} 
+0

* 표시 기본값은 *은 JDK에서 JAX-WS 구현이 최소한의 NIO 기반 웹 서버를 사용 중 하나를 사용합니다. –

+0

감사합니다! 이미 실행중인 Tomcat 서버를 대상으로하는 방법이 있습니까? – Will

답변

19

Endpoint.publishEndpoint.publish이 호스트에 tomcat 서버를 사용합니까 아니면 미니 glassfish 종류의 서버입니까?

는 JAX-WS RI는 Endpoint.publish API는 Sun의 Java SE 6에 포함 된 경량 HTTP server implementation가 내장 된 글래스 피쉬도 내장 톰캣과 더 적은 당신의 기존 사용하지 그래서 아니, 그것은 않습니다 기본적으로 사용 Tomcat 설치 : 임베디드 컨테이너를 사용합니다. 즉, 동일한 JVM 내에서 실행되는 컨테이너입니다. 다만, 실제로는 서비스 프로 바이더 구현 (SPI)을 제공하는 한, 다른 구현을 플러그 인 할 수 있습니다. 예를 들어, Jetty 6은 ​​J2se6HttpServerSPI을 참조하십시오. 하지만 여기에 모든 세부 사항을 다루지는 않을 것입니다.

포트가 이미 사용 중이라고 나와 있기 때문에 설치된 Tomcat 서버에서는 작동하지 않는 것 같습니다.

위에서 말했듯이 Enpoint.publish API는 기존 Tomcat 설치를 사용하지 않습니다. 자체 서버를 사용하므로 앱을 패키지하고 배포하지 않고도 웹 서비스를 배포 할 수 있습니다. 개발 중에 특히 유용합니다 (사물의 속도가 빨라짐). 실제로, 그것은 매우 편리합니다.

이제 포트 8082에서 실행중인 Tomcat 서버가 있고 동일한 포트를 사용하여 Endpoint을 게시하려고하면 알아 차린대로 작동하지 않습니다. 개발 중에는 다른 (사용하지 않는) 포트를 사용하십시오.

웹 서비스를 기존 Tomcat 설치에 배포하려는 경우 전쟁에서 패키지를 만들고 Tomcat에이 전쟁을 배포해야합니다. 그러나 이것은 완전히 다르며 Endpoint.publish API를 사용하는 것과 관련이 없습니다.

+0

잘 설명. – atiqkhaled

1

매우 흥미 롭습니다. 임베디드 서버에는 해당 포트로 보낸 비누 메시지를 처리하는 비누 엔진도 포함되어 있습니다.이 또한 포함 된 비누 엔진입니다하거나 인기있는 비누 엔진 (축 2, CXF, 지하철)