sfr*_*frj 10 java web-services ejb http jax-rs
在Adam Bien的博客上阅读文章时,我在使用EJB 3.1时发现了java restful中的一个新功能.
问题是Stateless和Singleton bean可以作为root资源公开.但是怎么样?我试着这样做:
@Stateless
@LocalBean
@Path("Hybrid")
public class RESTEJBSample {
@GET
@Path("/demo")
@Produces(MediaType.TEXT_PLAIN)
public String something() {
return "I am a Hybrid!!!";
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用URL http:// localhost:8080/HybridSample/resources/Hybrid/demo时,我收到404错误.
为了确保JAXRS正在我的项目中工作,我创建了一个简单的pojo资源,以测试它是否正常工作.
@Path("/genericresource")
public class GenericResource {
@GET
@Path("/samplemethod")
@Produces(MediaType.TEXT_PLAIN)
public String saySomething() {
return "Something!";
}
}
Run Code Online (Sandbox Code Playgroud)
这里当我调用URL http:// localhost:8080/HybridSample/resources/genericresource/samplemethod它工作正常!
所以我的问题是:
我的EJB中缺少什么,所以它可以作为Web服务资源,如GenericResource类正在做什么?
是否需要一些额外的配置?
使用EJB作为Web服务有什么限制?
per*_*ssf 11
根据有关Jersey RESTFul Web服务的NetBeans教程,您可以决定是否
创建javax.ws.rs.core.Application的子类,所有Rest资源将自动由此类注册(Java EE 6)
要么
在web.xml中创建默认的Jersey REST servlet适配器.
我一直使用第二种选择,其中包括将此添加到您的web.xml:
<servlet>
<servlet-name>ServletAdaptor</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>ServletAdaptor</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
根据我的经验,将REST Web服务公开为EJB非常有用.你可以在任何你喜欢的地方注入它,你可以在其中注入你的EntityManager,你甚至可以在一些简单的情况下将它用作DAO.
关于您关于功能和限制的问题/评论:企业bean在EJB容器中运行,无论它们是否部署在war文件中.您可以将JMS ConnectionFactory作为资源注入其中,如Java EE 6教程的本节中所述.由于注入了ConnectionFactory,您可以发送JMS消息.如果要异步接收JMS消息,则需要按照上述教程的本节中的说明定义消息驱动Bean .我从未尝试扩展用于Jersey Web服务的相同EJB以实现MessageListener接口,但我认为这也应该是可行的(如果没有,您可以将MDB注入您的Jersey根无状态bean).
最后,您可以使用此处说明的Container-Managed事务.此外,从此NetBeans教程:
为了让您可以看到应用程序将使用Java Transaction API(JTA)(transaction-type ="JTA").这指定了将持久化上下文中管理实体生命周期的职责分配给容器.
<persistence-unit name="em" transaction-type="JTA">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33203 次 |
| 最近记录: |