2011-03-24 57 views
0

我想了解从Servlet中使用JNI的正确方式是什么。如何在Windows上正确使用Java EE(Servlets)?

据我所知,有几个问题:

  1. 如果本机DLL崩溃,这将降低整个应用程序服务器
  2. 如果DLL是由一个类加载加载,比其他类加载器将不能够加载和使用它。

我搜索互联网,发现几个可能的解决方案

  • 创建独立JMS启用的应用程序和使用JMS的Servlet中与之通信。
  • 运行独立的服务器,负载在它JNI并通过RMI
  • 使用Java连接器架构对它说话

我希望在这个问题上的任何信息,什么是在这种情况下,最好的做法是什么?

P.S.我不确定它是否重要,但需要使用本机DLL的应用程序在JBoss上运行。

回答

1

我绝对不会在Java EE应用服务器中运行基于JNI的工具。你对使用JMS的建议是一个很好的建议。你可以创建一个围绕基于消息豆服务,通过您的外部服务分派消息做出响应:

http://oreilly.com/catalog/entjbeans3/chapter/ch13.html

这里是链接到Oracle的Java EE文档上的消息驱动bean: http://download.oracle.com/javaee/5/tutorial/doc/bnbpk.html

我建议让两个JBoss服务器通过JMS彼此通信比编写JCA适配器更容易,并且JMS消息驱动的Bean是一个更干净的接口。 JCA似乎根本没有发展 - 似乎没有任何优秀的实施教程(这只是我的看法)。

+0

如果您拥有像Apache的ActiveMQ这样的独立MQ服务器,则不需要2个JBoss服务器。 – 2011-03-24 09:45:43

+0

@精英绅士:假设他有一个需要JBoss运行的应用程序,以及他正在尝试与之通信的另一个JBoss应用程序。如果不是这样,那么你是对的,他可以使用JBoss MQ。不需要添加第三方组合。 – 2011-03-24 13:18:22