[英]Java-WS RS resources structure
例如,我們有一些帶有子資源的java-ws rs結構:
@Stateless
@Path("/rootpath/")
class Root {
@Path("/A")
public A getA {
...
}
@Path("/B")
public B getB {
...
}
}
@Stateless
@LocalBean
class A {
@GET
@Path("/getAStuff")
public String getAStuff(
@QueryParam("p") callback: String) {
return "A stuff";
}
@GET
@Path("/getAnotherAStuff")
public String getOtherStuff(
@QueryParam("p") callback: String) {
return "A stuff";
}
}
@Stateless
@LocalBean
class B {
@GET
@Path("/getBStuff")
public String getBStuff(
@QueryParam("p") callback: String) {
return "B stuff";
}
}
實際上,這種結構要復雜得多(越來越深)。 問題是-getA和getB實施的最佳方法是什么?
我可以做這個:
public A getA {
return new A();
}
或者我可以使用EJB:
@EJB
A a;
public A getA {
return a;
}
或那樣:
@Context
private ResourceContext resourceContext;
public A getA {
A a = resourceContext.getResource(A.class);
return a;
}
第一種方法使我可以讀取Root類中的p參數,然后通過構造函數參數將其傳遞給A和B,而不必在A和B的每個方法中都使用它。但是Java EE教程說,我應該對Webservice類使用Stateless EJB。
首先,永遠不要自己構造EJB-您手頭有一個容器,它負責組件的生命周期。
其次,由於我假設您至少使用Java EE 6,因此對組件使用通用的@Inject
。
第三,您不必使用EJB,它也可以是CDI組件或純POJO。
最后,我不明白,為什么您在Root
A
類和B
類的吸氣劑? @Path
注釋也可以在類聲明本身上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.