J2EE容器允许直接服务器套接字?

问题描述:

我有一个问题,这可能听起来很奇怪。
我很想知道J2EE容器是否允许部署的应用程序为了自己的目的打开直接服务器套接字(本质上是容器的旁路)。
我知道想要这么做很奇怪,但我要问的原因是,我读过一个javax.xml.endoint不能在容器中启动,并且想知道这是否是原因。J2EE容器允许直接服务器套接字?

UPDATE:这篇文章的答案似乎与我矛盾。一个答案(通过andri)是指EJB规范,它被禁止,但Codemwnci的其他答案(由Hippo的评论支持)说,它是生产中使用的东西。我不知道该从这些帖子得出什么结论。任何人都可以帮助清除这个?

谢谢。

我有一个在WebSphere应用程序服务器(WAS 7)上运行的Web应用程序。在其中一个应用程序中,作为应用程序启动时运行的servlet的一部分,我创建了一个ServerSocket。

这是在一个大规模的生产环境中运行,并已工作了很多年。

+0

谢谢。其他容器实现方面有什么区别吗?我认为,例如在允许应用程序的线程中,各种容器所采用的方法不同。有些人不允许。或者我对此感到困惑? – Cratylus 2010-10-31 16:46:38

+1

+1。我正在研究在Websphere和Tomcat上运行的类似产品。 – AbdullahC 2010-10-31 16:47:30

+0

@ user384706我从来没有听说过这个特定的限制,但这并不是说有一个限制。每个供应商都可能做他们自己的事情,所以很难说明确的。 – Codemwnci 2010-10-31 16:50:05

严格地说,禁止由EJB specification,就如同管理自己的线程是被禁止的:

一个enterprise bean不能试图监听套接字,套接字上接受连接,或者使用多播套接字。

不允许这种情况的可能原因是分布式应用程序和在应用程序服务器实例之间移动EJB。打开原始套接字的“官方”解决方案是编写JCA连接器。

+1

这只适用于EJB的权利?没有任何一种servlet web应用程序。或者我对此感到困惑? – Cratylus 2010-10-31 17:15:10