Jersey kullanarak bir Rest sınıfına hizmetler enjekte etmeye çalışıyorum.Jersey ve yaylı entegrasyon - fasulye Enjeksiyonlar çalışma zamanında boştur
Bu sınıfa ne şekilde veya nasıl enjekte etmeye çalıştığım önemli değil, çalışma zamanında null olarak görünüyor. Günlük dosyalarına bakmak, web uygulaması başlatıldığında setJsonTestService'nin çağrıldığını ve bu noktada null olmadığını gösterir. Ancak, daha sonra bu sınıf için bir PUT isteği ile eriştiğinizde, boştur.
Tamamen şaşırdım.
@Named
@Path("JsonTest")
public class JsonTest {
@Context
Request request;
@Context
UriInfo uriInfo;
protected final Logger log = Logger.getLogger(getClass());
private JsonTestService jsonTestService;
@Autowired
public void setJsonTestSerivce(JsonTestService jsonTestService) {
log.info("Setting JsonTestService.");
if (jsonTestService == null) {
log.info("JsonTestService is null at injection");
}
this.jsonTestService = jsonTestService;
}
@Inject
public ScrapIntermediate scrapIntermediate; // just a plain empty class with an is true method
@PUT
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public void putJson(@PathParam("id") String id) {
log.info("Putting some json at " + id);
if (scrapIntermediate == null) {
log.info("scrapIntermediate is null...");
}
if (jsonTestService != null) {
jsonTestService.sendUpdate();
} else {
log.info("jsonTestService is null...");
}
}
}
Herhangi fikirler:
sınıf şöyle?
Güncelleme:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>EDAS</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Web istekleri bu Jersey sınıfıyla nasıl eşleştirilir? Spring gibi sesler bu sınıfın bir örneğini başlatır, ancak Jersey istekleri ele almak için başka bir örneği başlatır. –
Web.xml sayfamın Jersey bölümünü göstermek için bu soruyu güncelledim. Jersey'den bahsettiğim tek yer burası. – zclark
Ve çözüldü. Maven ve benim Jersey ithalatı ile ilgili sorun hem ilkbahar-bağlama 2.5.6 ve hem de 3.0.5'in ithal edilmesine neden oldu. Bu, ek açıklama çatışmasına neden oldu ve aynı sınıfın farklı örneklemelerine yol açtı. Bana izin verdikten sonra cevap olarak gönderir ... İçgörü Matt için teşekkürler. – zclark