【问题标题】:J2EE containers allow direct server sockets?J2EE 容器允许直接服务器套接字?
【发布时间】:2010-10-31 16:38:08
【问题描述】:

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

更新:这篇文章的答案对我来说似乎是矛盾的。一个答案(andri)指的是 EJB 规范,它是被禁止的,而 Codemwnci 的另一个答案(由 Hippo 的评论支持)说它是在生产中使用的东西。我不确定从这篇文章中得出什么结论。谁能帮忙解决这个问题?

谢谢。

【问题讨论】:

    标签: java jakarta-ee containers specifications serversocket


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。请问其他容器实现有什么不同吗?我认为,例如在允许来自应用程序的线程时,各种容器采用的方法是不同的。有些人不允许。还是我对此感到困惑?
    • +1。我正在开发可在 Websphere 和 Tomcat 上运行的类似产品。
    • @user384706 我从来没有听说过这种特殊的限制,但这并不是说有一个。每个供应商都可能做自己的事情,所以很难说清楚。
    • @Hippo & Codemwnci:根据andri的参考,你所做的其实是违反规范的?还是我对此感到困惑?
    【解决方案2】:

    严格来说是EJB specification禁止的,就像禁止管理自己的线程一样:

    企业 bean 不得尝试侦听套接字、接受套接字上的连接或使用套接字进行多播。

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

    【讨论】:

    • 这仅适用于 EJB 对吧?不适用于任何类型的 servlet Web 应用程序。还是我对此感到困惑?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2011-11-19
    相关资源
    最近更新 更多