Restful WS 中的依赖注入

2024-01-03

我有简单宁静的WS

@Path("basic")
public class ServiceRS
{

   private IServiceJAX service;

   @GET
   @Produces(MediaType.APPLICATION_JSON)
   @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
   public String find(@FormParam("searchRequest") final String searchRequest)
   {
//...
      final List<Info> response = service.find(search);
//...
   }

}  

Where IServiceJAX is @Localjax-webservice 的接口。 我可以注射吗IServiceJAX to ServiceRS使用注释?
我不想使用 JNDI 查找...


你当然可以。尽管我想还有其他方法,但我已经成功运行了一个简单的测试项目@Stateless @WebService, @Local实施interface, 注入通过@EJB注释成@StatelessRESTFul Web 服务注释为@Path.

这并不是您所要求的正确的 CDI 注入,但它工作得很好并且可能符合您的需求。

服务JAX class:

public interface IServiceJAX {
    public String hello(String txt);
}

IServiceJAXImpl class:

@WebService(serviceName = "NewWebService")
@Local
@Stateless
public class IServiceJAXImpl implements IServiceJAX {

    @WebMethod(operationName = "hello")
    @Override
    public String hello(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }
}

服务RS class:

@Path("basic")
@Stateless
public class ServiceRS {

    @EJB private IServiceJAX wsi;

    @GET
    @Path("{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public String result(@PathParam("id") String id) {
        return wsi.hello(id);
    }
}

UPDATE

如果你更喜欢 CDI 注入,你可以保留上面的代码并简单地删除@Local and @Stateless注释来自IServiceJAXImpl。您可以使用以下方法注入此类的实例:

@Inject private IServiceJAX wsi;

代替

@EJB private IServiceJAX wsi;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Restful WS 中的依赖注入 的相关文章

随机推荐