簡體   English   中英

如何在應用程序中嵌入Wildfly服務器

[英]How to embed a Wildfly server within an application

我正在構建一個OSGi應用程序,其中包含(目前)只有業務邏輯。 由於我希望我的用戶通過瀏覽器與我的軟件進行交互,我正在考慮嘗試通過以下命令在我的應用程序中添加應用程序服務器:

public void startApplicationServer();
public void stopApplciationServer();
public void deployApp(App appToDeploy);
public void undeployApp(App appToUndeploy);

經過一番思考,我選擇的應用服務器是“wildfly 10”。 但是,我沒有找到任何允許我以編程方式調用wildfly的資源。 我的問題是你知道要遵循的程序或一般步驟,以實現我的目標嗎?

您可以找到一些有用的信息來幫助我:

  1. 我選擇了Wildfly,因為它完全支持Java EE 7,在JDK8上運行,它是在LGPL下發布的(我更喜歡開源glassfish,但是它是在GPL下發布的,因此必須使源可用。因為(在將來)我想讓這個軟件商業化,我被迫丟棄它);
  2. 也許你們中的一些人可能會建議在應用程序服務器上構建我的整個應用程序。 我不喜歡這樣做,因為Web界面可能只是我應用程序的一個可能的用戶界面(誰知道,將來我想切換到另一個界面,如CLI或類似桌面);
  3. 我看了幾個內容,比如wildfly-swarm或Arquillian:我知道這些項目目標與我的完全不同,但也許它們可以成為解決方案的一部分? 這只是我的個人(也可能是錯誤的)思想;

我是整個“應用服務器”世界的新手,所以我很有可能錯過了一些東西。

謝謝你的回復。

你可能想看看WildFly Swarm

雖然沒有記錄,但還有WildFly啟動器API 你可以看到一些如何在wildfly-maven-plugn使用它的例子。

另一種選擇是應用程序客戶端 雖然我可能會傾向於使用WildFly Swarm作為您的用例。

我最終在OSGi環境中嵌入了tomcat 8。 我真的想為OSGi和應用服務器使用相同的JVM進程(至少對我來說有兩個獨立的進程,所有后續的開銷都沒有意義),因此嵌入tomcat是完美的。 放棄Java EE 7 Full Profile並不是一個很大的損失,因為我只需要Web Profile(+用於Web服務的Jersey)。

我已經寫了關於如何嵌入OSGi的tomcat的指導這里 :如果該鏈接將打破,我會寫下來這里最重要的階段:

  1. 添加到maven所有“tomcat嵌入”依賴項;
  2. 將“felix.service.urlhandlers = false”添加到config.properties;
  3. StandardJarScanner創建一個新的JarScanner ,其中忽略“http:// .extensions: /”之類的URI;
  4. 對每個context= tomcat.addWebApp(String, String)調用使用context.setJarScanner(JarScanner js)方法;
  5. 使“tomcat bundle”成為框架擴展包(參見OSGi R6 3.15部分 );
  6. 通過正常的ServiceRegistration程序通過“擴展束激活器”注冊“tomcat bundle”服務;
  7. 將tomcat接口包軟件包添加到“org.osgi.framework.system.packages.extra”config.properties(例如,如果“tomcat bundle”的接口位於com.acme.applicationserver包內,則添加“com.acme.applicationserver”

我不會僅僅因為我的問題與野生蠅有關而將這個答案標記為正確答案。 我認為這個答案只是一種解決方法(即使對我來說這個答案肯定能解決我的問題)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM