2011-12-09 3 views
3

중첩 EJB 프로젝트, .war 동적 웹 프로젝트 및 엔티티 bean 정의가 들어있는 .jar 파일이있는 EAR 파일이 있습니다.어노테이션을 사용하여 JBoss AS 7에서 웹 서비스 만들기

package session; 

import javax.ejb.Remote; 
import javax.jws.WebMethod; 
import javax.jws.WebService; 

@Remote 
@WebService 
public interface HelloWorldRemote { 
    @WebMethod 
    public String greet(String from); 
    @WebMethod 
    public String getMessage(); 
} 

이 구현 클래스 :

내가이 원격 인터페이스를 사용하여 간단한 SOAP 기반의 웹 서비스를 만들려고

그러나
package session; 

import javax.ejb.Stateless; 
import javax.jws.WebService; 

@Stateless 
@WebService(endpointInterface = "session.HelloWorldRemote", serviceName = "HelloWorldWS") 
public class HelloWorldImpl implements HelloWorldRemote { 

    public String greet(String from) { 
    return "Hello, " + from + "."; 
    } 

    public String getMessage() { 
    return "It's working."; 
    } 
} 

, 나는 EAR 파일을 배포 할 때, 로그는 클래스, WSDL, 웹 서비스 또는 내 주석을 기반으로 웹 서비스를 만들려는 시도를하고 있다고 생각하게하는 어떤 것도 언급하지 않습니다.

무엇이 누락 되었습니까?

답변

4

이것은 너무 오래 걸려서 우연히 발견되었습니다. 특정 JBoss 기능을 지원하기 위해 "--server-config = standalone-preview.xml"플래그를 사용해야한다고 설명하는 포럼을 발견했습니다. standalone-preview.xml을 어디서 발견 할 수 있었는지 알아 내려고 시도한 결과 잘못된 버전의 JBoss를 사용하고 있다는 것을 알게되었습니다.

JBoss 7의 "웹"프로필은 직관적으로 웹 서비스를 지원하지 않습니다. (적어도 JAX-WS 버라이어티의 것들은 아닙니다.)

해결책은 "Everything"프로파일을 다운로드하고 위의 플래그를 사용하는 것입니다. 현재 Eclipse에서 작업 중이라면 맨 아래의 "서버"탭에서 서버를 두 번 클릭하고 "Open Launch Configuration"을 클릭하여 플래그를 추가 할 수 있습니다.

나는 이것을 추적하는 데 다른 사람을 몇 시간이나 절약했으면 좋겠다.

2

전쟁의 web.xml에 웹 서비스를 등록하셨습니까?

<servlet> 
    <servlet-name>HelloWorldImpl</servlet-name> 
    <servlet-class>session.HelloWorldImpl</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>HelloWorldImpl</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
+0

JAX-WS를 사용할 때이 단계가 필요하지 않습니다. 올바른 버전의 JBoss를 설치하고 구성 했으므로 위에 나열된 특수 효과가 제대로 작동하는 것 같습니다. 생각해 줘서 고마워! – zslayton

관련 문제