无法为JMS队列指定目标,因此可能正在获取

时间:2017-06-16 19:29:51

标签: java jms weblogic

我正在创建一个WL JMS队列但是在创建时我没有看到附加此队列的目标(参见下面的屏幕截图),所以我创建它没有任何目标。

enter image description here

现在,之后,当我尝试使用JMS客户端代码进行连接时,我得到了以下异常:

Exception in thread "main" javax.naming.NameNotFoundException: Unable to resolve 'dq1'. Resolved '' [Root exception is javax.naming.NameNotFoundException: Una
ble to resolve 'dq1'. Resolved '']; remaining name 'dq1'
        at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:251)
        at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:466)
        at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:274)
        at weblogic.jndi.internal.ServerNamingNode_12120_WLStub.lookup(Unknown Source)
        at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:440)
        at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:426)
        at javax.naming.InitialContext.lookup(Unknown Source)

我很确定我的客户端代码没有错误,因为其他人可以使用相同的代码并将消息推送到队列。

是否发生异常,因为队列未附加到任何目标?如何将此队列附加到目标,如托管服务器?

我正在将JMS服务器定位到托管服务器,我想我会选择为队列选择目标,但它不会出现,这可能就是异常的原因。请注意,我已经尝试为队列创建子部署模板,但它不起作用。

如果需要任何其他信息,请与我们联系。

更新

问题现在被隔离到托管服务器,我可以将消息推送到目标管理服务器的队列,但是当我尝试使用托管服务器时,它没有成功,下面是我做的。

我有一个托管服务器(使用节点管理器运行) - ms1,然后我创建了一个针对JMSServer2的JMS服务器ms1

enter image description here

然后我创建了一个目标为JmsModule2的JMS模块ms1,创建了一个JMS子部署Subdeployment2,其目标是JMSServer2并创建了一个连接工厂和队列,其子部署是Subdeployment2,目标是JMSServer2。屏幕截图下方:

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

好的,我明白了。实际上,您似乎必须创建一个子部署才能在JMS队列上启用目标。

我假设您已正确创建 JMS服务器 JMS模块

现在你必须:

创建子部署

首先,您需要创建一个子部署,将JMS服务器指定为此子部署的目标:

enter image description here

这里我的JMS服务器名为JMSServer

使用子部署

创建队列

然后创建JMS队列。请注意,如果您未在队列配置中指定任何子部署,则无法看到任何目标:

enter image description here

但是,如果您正确指定了先前创建的子部署,您将看到您定位JMSServer:

enter image description here

就是这样!

希望这有帮助。

修改

我也在集群上进行了测试,并且在定位单个受管服务器实例时它可以正常工作。你必须

  1. 创建一个JMS服务器将您的单个受管服务器实例指定为目标。

  2. 创建一个JMS模块使用“群集的一部分”将您的单个受管服务器实例指定为目标。

  3. 在此JMS模块中,创建一个子部署,使用“群集的一部分”将您的单个受管服务器实例指定为目标。

  4. 最后创建您的JMS队列并指定相应的子部署:您将看到JMS服务器作为目标。