2009-04-10 3 views
4

JAX-WS 어노테이션을 통해 웹 서비스 메소드를 공개하려고합니다.서블릿 + JAX-WS

public class TimeServerPublisher { 
public static void main(String[ ] args) { 
    // 1st argument is the publication URL 
    // 2nd argument is an SIB instance 
    Endpoint.publish("http://127.0.0.1:9876/ts", new TimeServerImpl()); 
} 

}

: 내가 본 많은 예제 빨리 독립 실행 형 응용 프로그램에서 서비스 (: 및 실행, 1 판 자바 웹 서비스에서 전을)를 스탠드에 EndPoint.publish() 메소드를 참조

내가 놓친 한 가지는 기존 앱에서 본질적으로 동일한 작업을 수행하는 것입니다. 이것을 처리 할 서블릿을 만들겠습니까? 기존 WAR 파일에이 서비스를 게시하는 올바른 방법은 무엇입니까?

답변

3

컨테이너에서는 이와 같이 게시 할 필요가 없습니다. 컨테이너가 게시를 수행합니다. JBoss 서버에서 사용할 계획이라면 JBossWS를 사용하십시오. 그렇지 않으면 Tomcat 또는 다른 서버에서 Axis2를 사용하는 것이 더 좋습니다.

다음 링크에서 자세한 내용을 읽어보십시오.

이 WS 사용중인 스택에 따라 달라집니다

http://ws.apache.org/axis2/

+1

또는 CXF : http://cwiki.apache.org/CXF20DOC/servlet-transport.html –

+0

그래, 나는 CXF를 놓쳤다 :-) –

1

@Jerrish 및 @andri coments와 같이 우려 사항에 따라 다른 해결 방법과 해결 방법이 있습니다.

웹 서비스를 게시 할 때 구성 (포트 등)을 설정할 필요가 없다는 아이디어가 있습니다. 가장 좋은 방법은 구성 파일 (XML, 속성 등)을 사용하거나 @Annotations를 사용하여 설정하는 것입니다.

예를 들어, Guice 나 Spring과 같은 프레임 워크를 사용하는 데 익숙한 경우 애플리케이션 게시 또는 일부 객체, 공장, 데이터 소스 등을 초기화하고 웹 서비스를 게시하는 컨텍스트를 시작하는 것이 가능하거나 권장된다는 점을 알고 있습니다. 응용 프로그램을 시작할 때 사용할 수 있기 때문에이 시간에 수행 할 수있는 작업은 아닌가요?

그런데 CXF에 대한 좋은 경험이 있었고 다른 솔루션은 웹 서비스를 만드는 또 다른 강력한 솔루션 인 Spring Web Services 일 수있었습니다.