[英]Test @Webservice EJB with WebServiceContext (Arquillian)
[英]Use WebServiceContext outside WebService
在我的Web服務中,我有:
@WebService(serviceName = "myservice")
public class ServiceName{
@Resource
private WebServiceContext context;
在無狀態類中,我想使用相同的操作:
@Stateless
public class MakeHappen{
@Resource
private WebServiceContext context;
但是我收到一個EJB異常。 如何在Webservice之外注入此資源?
AFAIK否,僅在Web服務的上下文中。
WebServiceContext
使Webservice端點實現類可以訪問與正在處理的請求有關的消息上下文和安全性信息。 通常,使用@Resource
批注將WebServiceContext
注入到終結點實現類中。
在您的情況下,您應該將無狀態EJB裝飾為Webservice。 無狀態EJB的開放方法可以表示為Web服務。
@Stateless
@WebService
public class MakeHappen {
@Resource
private WebServiceContext context;
...
Web服務終結點屬於Web層,由Web容器管理(有關更多信息,請參見Java EE 7教程6.1 Web應用程序 )。
另一方面,Enterprise Bean是業務邏輯組件。 它由EJB容器管理( Java EE 7教程32.1什么是企業Bean? )。
這意味着企業bean無法注入WebServiceContext,因為它是由不同的容器管理的。 這也沒有意義,因為EJB容器沒有WebServiceContext。
我遇到了同樣的問題 ,這就是我解決的方法:
WebServiceContext wscontext = null;
try {
Context ctx = new InitialContext();
wscontext = (WebServiceContext) ctx.lookup("java:comp/WebServiceContext");
} catch (NamingException e) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.