2012-07-03 4 views
2

У меня есть простой, успокоительной WSDependency Injection в успокоительной 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. Можно ли вводить IServiceJAX в ServiceRS с помощью аннотации?
Я не хочу использовать поиск JNDI ...

ответ

3

Несомненно, вы можете. Хотя я полагаю, есть и другие способы, я успешно запустить простой тестовый проект с @Stateless@WebService, @Local реализация interface, впрыскиваемого через @EJB аннотацию в @Stateless веб-службы RESTful с аннотацией @Path.

Это неправильная инъекция CDI, как вы требовали, но она работает хорошо и, вероятно, подходит для ваших нужд.

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 + " !"; 
    } 
} 

Сервисеры класс:

@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 и @Stateless аннотаций из IServiceJAXImpl. Вы можете придать экземпляр этого класса с помощью:

@Inject private IServiceJAX wsi; 

вместо

@EJB private IServiceJAX wsi; 
+0

спасибо за обновление, которое помогло мне много –

+0

ИПР не работает. Дает мне nullpointer для объекта – gshauger