我决定现在是时候挖掘整个Java EE的东西了。我在Java SE中使用EE一些技术,如JPA或JMS,但我仍然在使用Java SE,我相信Java EE和应用服务器将解决我的一些问题。
但是:在网上阅读了一些文章之后我还有一些问题。
第一:我是否仅限于请求 - 响应应用程序?我有一个通过HTTP提供XML文档的应用程序。所有传递的对象都将添加到队列中,该队列将在不同的线程中调度。对这个目标进行了一些验证,包括打开远程机器的插座(我听说EJ-Beans不允许这样做,这是真的吗?)。那么,是否可以在应用程序服务器中执行此操作?第二:我知道有消息驱动的bean,是否可以从应用服务器外部向MDB发送JMS消息?我有一个发送JMS消息的服务,但作为遗留系统运行,不在同一个应用程序服务器内运行。
第三:系统管理员或用户如何配置我的应用程序?我知道在应用程序服务器中配置了一些像数据库连接这样的东西,我的应用程序可以通过JNDI查找它们或通过DI获取它们。但是应用程序特定配置怎么样?
是的,这些都是非常无聊的问题,但也许有人有时间向我解释这些东西是如何运作的。 :)
的问候, POSIX
PS:
第四:似乎EJB不允许对文件做任何事情,因此Java EE似乎不是接收文件的服务的选项,将它们推送到不同的系统并希望它们写入Socket(参见问题1) )?答案 0 :(得分:2)
我可以说Java EE可以毫无疑问地使用。让我再深入探讨一下您的具体问题:
您可以从EJB打开套接字连接。没有什么可以阻止你这样做。但是,不建议对Java EE应用程序执行此类操作。在我看来,更好的选择是实现Java EE连接器(JCA),它将管理到您的专有系统的套接字连接池。这是按照规范实现这种集成的模型方法。
是的!完全可以接收从外部应用程序/系统(AS外部)发送的消息。这是使用消息传递进行集成的主要思想:)在许多情况下,您的应用程序是Java EE应用程序通过MDB从JMS通道接收消息,但JMS只是一个API,可以由任何消息传递系统实现,例如: IBM MQ。在此体系结构中,外部系统将MQ消息放入队列,并且侦听该队列的Java EE应用程序通过JMS API接收消息!
一般而言,Application Server为管理员提供了管理Java EE资源的绝佳工具,即数据源,JMS连接工厂,JMS目标,JTA事务管理器等。如果您需要能够更改特定的Java EE应用程序,最好的选择似乎是JMX。只需实现几个MBean,将它们导出到嵌入在Application Server中的JMX服务器,就可以了。这个任务在JBoss中实际上是微不足道的,但是现在大多数现代应用服务器都提供了广泛的JMX功能。
乍一看,EJB似乎不是处理文件的最佳选择。但请记住,EJB的实现仍然是用纯Java编写的,因此没有什么能阻止您读取/流式传输文件等等。我有处理大型文件作为输入文件的大型Java EE应用程序的经验,并且可以向您保证Java EE是一个很好的技术选择:)
答案 1 :(得分:0)
Here是对EJB 1.1规范的限制。
以下是我对你的问题的看法:
答案 2 :(得分:0)
我建议将每种技术应用到您目前感到疼痛的适当位置。关于你的具体要点,
在EE上下文中,您可以将消息添加到JMS队列,该队列具有可进行实际处理的MDB。关于HTTP请求/响应生命周期的管理,您将以与现在相同的方式进行管理,或者使用现有库来执行此操作。通过转移到EE应用服务器,您可以允许应用服务器管理线程,事务等,而不必手动管理它。
正如duffymo所说,MDB负责接收消息,他们不关心消息的来源。
系统管理员可以将应用服务器配置为duffymo。此外,您可以将JMX bean公开给其他系统或最终用户,以便他们根据您的需要配置服务。
答案 3 :(得分:0)
答案 4 :(得分:0)