簡體   English   中英

Java-WS RS資源結構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM