首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java-WS RS资源结构

Java-WS RS资源结构
EN

Stack Overflow用户
提问于 2014-06-26 19:39:33
回答 1查看 63关注 0票数 0

例如,我们有一些带有子资源的java-ws结构:

代码语言:javascript
复制
@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实现的最佳方式是什么?

我可以这样做:

代码语言:javascript
复制
public A getA {
    return new A();
}

或者我可以使用EJB:

代码语言:javascript
复制
@EJB
A a;

public A getA {
    return a;
}

或者以这种方式:

代码语言:javascript
复制
@Context
private ResourceContext resourceContext;

public A getA {
    A a = resourceContext.getResource(A.class);
    return a;
}

第一种方法使我可以读取Root类中的p参数,然后通过构造函数参数将其传递给A和B,而不是在A和B的每个方法中都使用它。但是Java EE教程说我应该对EJB服务类使用无状态EJB。

EN

回答 1

Stack Overflow用户

发布于 2014-06-27 14:48:17

首先,永远不要自己构造EJBs您手头有一个容器,负责组件的生命周期。

其次,由于我假设您至少使用JavaEE6,因此对组件使用通用的@Inject

第三,您不必使用EJB,它也可以是CDI组件或普通的POJO。

最后,我不明白,为什么在Root中有一个用于类AB的getter?@Path注释也可以在类声明本身上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24429556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档