gpt4 book ai didi

java - RESTful WS 中的依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-04 05:40:32 25 4
gpt4 key购买 nike

我有简单 Restful 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);
//...
}

}

在哪里 IServiceJAX@Local jax-webservice 的接口(interface)。
我可以注入(inject) IServiceJAXServiceRS使用注释?
我不想使用 JNDI 查找...

最佳答案

你当然可以。尽管我想还有其他方法,但我已经成功运行了一个简单的测试项目,其中包含 @Stateless @WebService@Localinterface 实现,通过 @EJB 注释注入(inject)到 @Stateless RESTFul Web 服务中,并使用 @Path 注释。

这不是您所要求的正确的 CDI 注入(inject),但它工作得很好,并且可能无论如何都符合您的需求。

IServiceJAX 类:

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

IServiceJAXImpl 类:
@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 类:
@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);
}
}

更新

如果您更喜欢 CDI 注入(inject),您可以保留上面的代码,只需从 @Local 中删除 @StatelessIServiceJAXImpl 注释。您可以使用以下方法注入(inject)此类的实例:
@Inject private IServiceJAX wsi;

代替
@EJB private IServiceJAX wsi;

关于java - RESTful WS 中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com