2013-02-15 62 views
0

我有一個名爲floodlight.jar的jar文件。我可以在cmd行運行它:java -jar floodlight.jar。現在我想將它轉換成一個包,用FUSE ESB容器進行部署。下面是我做的,到目前爲止:從主類啓動osgi捆綁而不是實現BundleActivator

  1. 轉換:

    java -jar bnd.jar wrap floodlight.jar 
    

    導致捆綁命名floodlight.bar。將名稱改爲floodlight.jar

  2. 部署

    FuseESB:[email protected]> osgi:install -s file:/home/usr/Dir/to/floodlight.jar 
    

我希望包可以做同樣的事情,我做了什麼在CMD行:Java的罐子floodlight.jar一旦入門。但是,它沒有做任何事情是積極的。它就像一個圖書館。

我想知道如何讓包一旦啓動就運行主類。任何人都可以幫助我?

+0

爲什麼你想避免寫一個'Bundle-Activator'?如果是關於代碼的重複,那麼你可以從你的激活器的start()方法調用main()。 – 2013-02-15 22:20:34

+0

因爲有一些java應用程序,比如floodlight,oracle noslqlDB,可以運行。我只想將這些應用程序部署到OSGi容器中,而無需進行太多更改。 – 2013-02-15 22:28:49

回答

1

OSGi應用程序的入口點是BundleActivator's。您不能像標準Java應用程序那樣調用主要方法。但是,您可以在捆綁的開始(BundleContext)方法中執行主要方法中的所有操作。

因此,實現BundleActivator接口並將其添加到您的清單。

+0

它是否像應付從主類到BundleActivator.start()的內容?然後將激活器添加到清單? – 2013-02-15 22:31:28

+0

您可能需要稍微改變一點,具體取決於您的程序。但總的來說,是的,start()是OSGi的主要()!但請記住,將標準程序轉換爲模塊化osgi應用程序可能會導致一些問題,這是由於OSGi的擴展類加載 – Mirco 2013-02-15 22:51:42