我有简单宁静的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 @Local
jax-webservice 的接口。
我可以注射吗IServiceJAX
to ServiceRS
使用注释?
我不想使用 JNDI 查找...
你当然可以。尽管我想还有其他方法,但我已经成功运行了一个简单的测试项目@Stateless
@WebService
, @Local
实施interface
, 注入通过@EJB
注释成@Stateless
RESTFul 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(使用前将#替换为@)