我想將我的EE應用程序遷移到OSGi。我的應用程序由業務庫,數據庫JPA /實體和REST/WS接口組成。它也有一個網絡客戶端。OSGi JAX-RS和bnd聲明式服務
我首先進行原型構造,並使所有接口和包以OSGi乾淨的方式彼此交談。我希望儘可能使用清晰的規範,而無需任何特定的供應商或框架。
我使用bnd maven插件來生成清單和聲明性服務。我想用注射像這樣,使我從剩下的資源OSGi服務的呼叫(在另一個bundle):
@Path("some-resources")
@Component
public class SomeResources{
private SomeService service = null;
@Reference
public void setController(SomeService service) { // <- this is never called
this.service = service;
}
@GET
@Produces(javax.ws.rs.core.MediaType.APPLICATION_XML)
public Object getSomeService() { // <- called
try {
service.process("Hello World"); // <- Error null object
}
...
}
我可以標註與BND @Component
和資源可以在@Resource
注入? 一切工作正常,但服務始終爲空。
應該如何聲明我的捆綁包使BND成爲一個web/wab包?
我用maven捆綁:
<packaging>bundle</packaging>
...
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
<dependencies>
<dependency>
<groupId>biz.aQute</groupId>
<artifactId>bndlib</artifactId>
<version>1.50.0</version>
</dependency>
</dependencies>
<configuration>
<supportedProjectTypes>
<supportedProjectType>ejb</supportedProjectType>
<supportedProjectType>war</supportedProjectType>
<supportedProjectType>wab</supportedProjectType>
<supportedProjectType>bundle</supportedProjectType>
<supportedProjectType>jar</supportedProjectType>
</supportedProjectTypes>
<instructions>
<_include>-osgi.bundle</_include>
</instructions>
</configuration>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>process-classes</phase>
<goals>
<goal>manifest</goal>
</goals>
</execution>
<execution>
<id>bundle-install</id>
<phase>install</phase>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
</plugin>
...
與BND說明
Web-ContextPath: my-root-http/rest/
Service-Component: *
我最近遇到了類似的問題(服務沒有被綁定),並追蹤到[split package](http://wiki.osgi.org/wiki/ Split_Packages)問題。您是否嘗試將您的服務接口放入單獨的包中? – 2012-04-18 07:22:51
謝謝@BjörnPollex的建議。我有3個軟件包,一個只有接口,一個帶有服務實現和REST bundel。我實際上將它移回到REST bundel,看看這樣做是否有效,但沒有運氣。如果我正在做的事情是正確的,那麼可能問題在於SCR找不到我的DS xml。 – Gadi 2012-04-18 07:29:20
感謝編輯@donalfellows – Gadi 2012-04-18 07:30:51