當我在閱讀Adam Bien's博客文章的同時使用EJB 3.1時,發現了java restful中的新特性。如何將EJB 3.1公開爲REST Web服務?
事情是無狀態和Singleton bean可以作爲根資源公開。但是如何? 我試圖做這樣說:
@Stateless
@LocalBean
@Path("Hybrid")
public class RESTEJBSample {
@GET
@Path("/demo")
@Produces(MediaType.TEXT_PLAIN)
public String something() {
return "I am a Hybrid!!!";
}
}
當我打電話的URL http://localhost:8080/HybridSample/resources/Hybrid/demo我得到一個404錯誤。
的這家Appart和公正,以確保JAXRS是在我的項目上工作,我創建了一個簡單的POJO資源只是爲了測試它是否工作正常。
@Path("/genericresource")
public class GenericResource {
@GET
@Path("/samplemethod")
@Produces(MediaType.TEXT_PLAIN)
public String saySomething() {
return "Something!";
}
}
在這裏,當我打電話的網址http://localhost:8080/HybridSample/resources/genericresource/samplemethod它工作正常!
所以我的問題是:
什麼在我的EJB丟失,因此它可以作爲一個Web服務資源的工作,如類GenericResource是幹什麼的?
是否需要一些額外的配置?
使用EJB作爲Web服務時有什麼限制?
好,我不知道第一個:)的web.xml文件選項也是我favoutity,目前我的web.xml lookl這樣了。 另外我使用了Netbeans IDE'New-> Webservice',並且按照嚮導我選中了一個選項,表示將Web服務創建爲無狀態bean。該插入將EJB添加到.war文件中,現在它工作正常。我的例子現在工作正常,但我也有興趣知道幕後發生了什麼?,哪些文件正在被Net Beans編輯?還有這個bean的侷限性是什麼? 是的,我認爲這是一個非常酷的功能。 – sfrj 2012-03-27 06:55:23
NetBeans不添加任何內容:唯一需要做的事情是創建Stateless類(在您的示例中爲RESTEJBSample)和web.xml中的servlet適配器。這個servlet正在幕後做所有的魔術。關於侷限性,我認爲你應該試着澄清一下你的問題。 – perissf 2012-03-27 09:43:11
當我提到限制我的意思。這些bean能夠像在EJB模塊中部署時一樣行事嗎?我的意思是,是否需要某種手動事務管理?它們可以與JMS交互嗎?...現在它們不在EJB容器中,它們位於.war文件中。 – sfrj 2012-03-28 11:02:55