【问题标题】:Automatic JMS Queue/Factory deployment自动 JMS 队列/工厂部署
【发布时间】:2025-12-05 15:55:02
【问题描述】:

我们在 Glassfish 3.1 上部署消息队列和工厂时出现了一些奇怪的行为。有一个工厂和一些使用该工厂的队列。队列在名为 sun-resources.xml 的文件中定义。当我们使用 netbeans 部署我们的应用程序时,工厂 + 队列将被自动创建(如果不存在)并且一切正常。但是当队列不存在并且每次抛出此异常时我们都通过 glassfish 管理控制台部署应用程序:

原因:com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:未定义本地字符串 在 com.sun.enterprise.connectors.jms.system.ActiveJmsResourceAdapter.getPhysicalDestinationFromConfiguration(ActiveJmsResourceAdapter.java:2061) 在 com.sun.enterprise.connectors.jms.system.ActiveJmsResourceAdapter.updateMDBRuntimeInfo(ActiveJmsResourceAdapter.java:1864) 在 com.sun.enterprise.connectors.inbound.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:186) 在 com.sun.ejb.containers.MessageBeanContainer.(MessageBeanContainer.java:204) 在 com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:121) 在 org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:234) ... 67 更多 引起:com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:未定义本地字符串 在 com.sun.enterprise.connectors.jms.system.ActiveJmsResourceAdapter.getPhysicalDestinationFromConfiguration(ActiveJmsResourceAdapter.java:2055) ... 72 更多

这是 glassfish 3.1 中的一个已知错误。应用程序服务器在部署时遇到异常并希望创建错误描述。缺少资源包的堆栈跟踪(在 glassfish 中)隐藏了导致错误的原始异常。

通过netbeans/console部署应用有什么区别,为什么会出现这个错误?

【问题讨论】:

    标签: queue jms glassfish-3 netbeans-6.9 ejb-3.1


    【解决方案1】:

    NetBeans 会在您部署时读取 sun-resources.xml 文件,并使用它在其中找到的信息“做正确的事”。管理员 gui 正在使用您存档中的数据...其中不包括 sun-resources.xml 文件...因此,存在部署错误。

    您可能希望使用 asadmin 子命令 add-resources 来注册 sun-resources.xml 文件中定义的资源,然后使用管理 gui 部署您的归档应用程序。

    【讨论】:

    • 所以它不可能在 glassfish 中通过项目的部署自动创建队列(在项目中使用一些 xml 文件)?