2016-09-19 87 views
1

我正在构建包含(目前)仅业务逻辑的OSGi应用程序。因为我希望我的用户通过浏览器,我通过命令思考尝试添加我的应用程序中的应用程序服务器就像我的软件交互:如何在应用程序中嵌入Wildfly服务器

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

经过一番思考,我选择了应用程序服务器“野蝇10“。但是,我没有找到任何资源允许我以编程方式调用wildfly。我的问题是您是否知道要遵循的程序或一般步骤以实现我的目标?

一些信息,你可以找到帮助我有用:

  1. 我选择Wildfly,原因是其完全支持Java EE 7,上JDK8运行,它是LGPL下发布的(我更喜欢开源的GlassFish,但是它是在GPL下发布的,因此必须使源代码可用。由于(将来)我想使这个软件成为商业用途,我不得不放弃它)。
  2. 也许你们中的一些人可能会建议在应用服务器本身上构建我的整个应用程序。我宁愿不这样做,因为Web界面可能只是我的应用程序的一个可能的用户界面(谁知道,也许将来我想切换到另一个界面,如CLI或类似桌面的界面);
  3. 我看过几个内容,比如wild sw群或Arquillian:我知道这些项目的目标与我的完全不同,但也许它们可以成为解决方案的一部分?这只是我个人的(可能是错误的)思想;

我是整个“应用程序服务器”世界的新手,所以很可能我错过了一些东西。

感谢您的任何答复。

+1

[This](http://stackoverflow.com/questions/29168150/is-it-possible-to-deploy-application与野蛮作为捆绑)可能是相关的。请注意,您的第2号问题存在缺陷。将您的软件创建为web应用程序并不妨碍为以后创建其他用户界面,特别是如果您事先已经想到了它。 – Kayaman

+0

我已经看过您发布的资源。将wildfly与OSGi完全整合将非常棒,但似乎该项目在wildfly 8.0.0 alpha之后被解雇。关于问题2中的缺陷:与问题无关,但您能否将我的资源联系起来,以提高我对这一观点的认识?这将是非常棒的! – Koldar

+1

好吧,假设您使用一些javascript框架(如angularjs)创建视图层,并将业务逻辑作为REST界面创建,然后可以创建任何类型的使用REST界面执行操作的用户界面。当然,如果你以前没有经验过,那么首先要学习一下。 – Kayaman

回答

1

您可能想看看WildFly Swarm

虽然没有记录,但也有WildFly launcher API。您可以在wildfly-maven-plugn中看到如何使用它的一些示例。

另一种选择是application client。尽管我可能会倾向于使用WildFly Swarm。

+0

我已经尝试过野蛮群体,但显然它会在软件的所有应用逻辑内部生成一个超级可执行的jar。我的需求不同:我只想让连接器能够从嵌入式服务器启动/停止,部署/取消部署应用程序。我觉得swarm可能是一个解决方案。你知道wildfly源代码中start/stop方法的位置吗?那些切入点应该是我问题的答案! – Koldar

+0

为了理解,您想启动一个您创建的Java进程,它将启动并停止WildFly的正确性?如果是这样的话,你可以使用启动API来做到这一点,但它会启动一个额外的过程。 –

+0

我试图在同一个进程中启动服务器,但显然最简单的方法就是使用您提供给我的启动器API。我会给它一个镜头(对不起,我现在才意识到,你提供给我的是我正在寻找的切入点!) – Koldar

1

我最终在OSGi环境中嵌入了tomcat 8。我真的想为OSGi和应用服务器使用相同的JVM进程(至少对我来说有两个独立的进程,所有后续的开销没有意义),因此嵌入tomcat是完美的。放弃Java EE 7完整配置文件并不是什么大的损失,因为我只需要Web Profile(+ Web服务)。

我已经写了关于如何嵌入OSGi的here tomcat的一个指南:如果该链接将打破,我在这里写下的最重要的阶段:

  1. 添加到Maven所有的“ tomcat嵌入“依赖关系;
  2. 将“felix.service.urlhandlers = false”添加到config.properties;
  3. 创建一个新的JarScannerStandardJarScanner其中的URI像“http:// 。扩展: /“被忽略;
  4. 使用context.setJarScanner(JarScanner js)方法为每context= tomcat.addWebApp(String, String)呼叫;
  5. 制作的‘雄猫捆绑’的框架扩展束(见OSGi R6 3.15 section);
  6. 注册‘雄猫捆绑’通过服务的”扩展束激活器“,通过正常的ServiceRegistration程序;
  7. 将tomcat接口捆绑包添加到”org.osgi.framework.system.packages.extra“config.properties(例如,如果”tomcat bundle“的接口在com中。 acme.applicationserver package add“com.acme.applicationserver”

我不会将此答案标记为正确答案,因为我的问题与野蝇有关。我认为这个答案只是一个解决方法(即使对我来说这个答案肯定解决了我的问题)

相关问题