2011-12-09 64 views
3

我有一個帶有嵌套EJB項目,.war動態web項目和包含實體bean定義的.jar文件的EAR文件。使用註釋在JBoss AS 7中創建Webservice

我試圖用這個遠程接口做一個簡單的基於SOAP的Web服務:

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(); 
} 

,這實現類:

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,webservices或任何可能導致我相信它正嘗試創建基於我的註釋的web服務的任何事情。

我錯過了什麼?

回答

4

這花了很長時間才發現,我偶然發現它。我發現一個論壇解釋說我需要使用「--server-config = standalone-preview.xml」標誌來支持某些JBoss功能。在試圖找出standalone-preview.xml可以找到/獲取的位置後,我瞭解到我一直在使用錯誤版本的JBoss。

與直覺相反,JBoss 7的「Web」配置文件不支持Web服務。 (至少不是那些JAX-WS品種)。

解決方案是下載「Everything」配置文件,然後使用上面的標誌。如果您像我一樣在Eclipse中工作,則可以在底部的「服務器」選項卡中雙擊服務器,然後點擊「打開啓動配置」來添加該標誌。

我希望我救了別人很多小時,因爲我跟蹤了這​​一點。

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