2013-03-29 60 views
0

對我和Java完全newb和OSGI。我試圖創建一個可以通過OSGi控制檯配置的Java類。我聽說你可以通過SCR註解來做到這一點,但不完全知道如何。我已經掌握了它的大部分內容,但不確定要獲取和發佈的內容以及如何在JSP中引用它。這是我到目前爲止。任何幫助是極大的讚賞。來自OSGI的可配置Java Servlet

import org.apache.felix.scr.annotations.Properties; 
import org.apache.felix.scr.annotations.Property; 
import org.apache.felix.scr.annotations.sling.SlingServlet; 
import org.apache.sling.api.SlingHttpServletRequest; 
import org.apache.sling.api.SlingHttpServletResponse; 
import org.apache.sling.api.servlets.SlingAllMethodsServlet; 

import javax.servlet.ServletException; 
import java.io.IOException; 

@SlingServlet(
paths={"/somepath/"} 
) 
@Properties({ 
@Property(name="email.add", value="Email Info",propertyPrivate=false), 
@Property(name="user.info",value="User Info", propertyPrivate=false) 
}) 
public class WelcomeMessage extends SlingAllMethodsServlet 
{ 
@Override 
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse         response) throws ServletException, IOException 
{ 
    //Do something here 
} 

@Override 
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException 
{ 
    //Do something here 
} 
} 
+0

這是吊索具體和需要吊索OSIIB捆綁工作。您還需要通過scr maven插件處理註釋。如果您不需要吊索,請查看Apache Http Servlet橋以幫助您解決問題。 –

+0

感謝您的回覆。對不起,但我很困惑我不確定你的意思是通過一個maven插件處理註釋你有一個簡單的例子嗎?我已經安裝了maven,但通過處理註釋來確定你的意思。對不起,完整,我的意思是完整的新手。 –

回答

3

爲了能夠處理這些註釋,您需要設置Maven SCR插件(來自Apache Felix)。這個插件將處理註釋並在你生成的JAR文件中創建元數據。

@SlingServlet註釋是Apache Sling特有的,並且需要某些Apache Sling捆綁才能註冊該servlet。 @SlingServlet註解也由Maven SCR插件處理。

下面是如何在Maven中配置SCR插件的示例。

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.felix</groupId> 
     <artifactId>maven-scr-plugin</artifactId> 
     <version>1.9.0</version> 
     <executions> 
     <execution> 
      <id>generate-scr-scrdescriptor</id> 
      <goals> 
      <goal>scr</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

此外,爲了能夠創建一個OSGi包(罐使用OSGi元數據),則需要安裝Maven的捆綁插件。

您可以在這裏找到有關Maven SCR插件的簡要文檔:http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin.html

Maven Bundle插件文檔在這裏:http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

但是,瞭解這一點的最佳方法是查看Sling捆綁包中的示例:https://github.com/apache/sling/tree/trunk/bundles

+0

謝謝@stenrs這是非常有幫助的。肯定地指出了我的正確方向。再次感謝! –