将EJB方法暴露为REST服务 [英] Exposing EJB method as REST service
本文介绍了将EJB方法暴露为REST服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在J2EE 6中,您可以将EJB会话bean公开为REST Web服务,如下所示:
@Stateless
@Path(/ test)
public class TestSessionBean {
@GET
@Produces(application / xml)
public String getTest ){
return<?xml version ='1.0'encoding ='UTF-8'?>< val>测试会话bean< / val>;
}
}
当我在.war中打包EJB时,这可以工作但是,当我尝试将我的项目打包到EAR中的单独的Web和ejb模块中时,我发现一个HTML 404未找到错误。
有人可以解释吗? p>
我正在使用Glassfish v3
这是我的web.xml
< servlet>
< servlet-name> TaskRestService< / servlet-name>
< servlet-class> com.sun.jersey.spi.container.servlet.ServletContainer< / servlet-class>
< load-on-startup> 1< / load-on-startup>
< / servlet>
< servlet-mapping>
< servlet-name> TaskRestService< / servlet-name>
< url-pattern> / services / *< / url-pattern>
< / servlet-mapping>
解决方案
JAX-RS注释企业bean在独立或者不包含在EAR中的单独ejb-jar文件。
见下文
In J2EE 6 you can expose your EJB session bean as a REST web service as below
@Stateless
@Path("/test")
public class TestSessionBean {
@GET
@Produces("application/xml")
public String getTest() {
return "<?xml version='1.0' encoding='UTF-8'?><val>test session bean</val>";
}
}
This works when I packaged the EJB in the .war, however, when I try to package my project into separate web and ejb modules inside an EAR I get an HTML 404 not found error.
Can someone please explain?
I'm using Glassfish v3
Here is my web.xml
<servlet>
<servlet-name>TaskRestService</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>TaskRestService</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
解决方案
JAX-RS annotated enterprise beans in a stand-alone or in a separate ejb-jar file that is included in an EAR is not supported.
See below
这篇关于将EJB方法暴露为REST服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文