2011-12-09 34 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