最近项目里要用到weblogic远程队列,研究了一下,在自己本机的不同域之间测试通过:
配置过程大致如下:1、创建jms server和jms module;2、在jms module中创建Foreign server;3、在Foreign server中的常规选项中设置JNDI Connection URL(包括协议和端口号,即:java.naming.provider.url)、JNDI Properties Credential(密码,即:java.naming.security.credentials)、Confirm JNDI Properties Credential(密码确认),另外JNDI Properties添加java.naming.security.principal(相当于用户名);4、在Destination选项中,设置local jndi name(本地队列名)与remote jndi name(远程队列)的映射关系;5、在Connection Factories选项中,设置local jndi name(本地连接工厂)与remote jndi name(远程连接工厂)的映射关系;6、然后在web应用中应用local jndi name就基本搞定了。但是我的程序报错了:
java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators]
at weblogic.security.service.SecurityServiceManager.seal(SecurityServiceManager.java:815)
at weblogic.security.service.SecurityServiceManager.getSealedSubjectFromWire(SecurityServiceManager.java:504)
at weblogic.rjvm.MsgAbbrevInputStream.getSubject(MsgAbbrevInputStream.java:316)
at weblogic.rmi.internal.BasicServerRef.acceptRequest(BasicServerRef.java:817)
at weblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java:301)
at weblogic.rmi.cluster.ClusterableServerRef.dispatch(ClusterableServerRef.java:236)
at weblogic.rjvm.RJVMImpl.dispatchRequest(RJVMImpl.java:1084)
at weblogic.rjvm.RJVMImpl.dispatch(RJVMImpl.java:1001)
at weblogic.rjvm.ConnectionManagerServer.handleRJVM(ConnectionManagerServer.java:240)
at weblogic.rjvm.ConnectionManager.dispatch(ConnectionManager.java:893)
at weblogic.rjvm.MsgAbbrevJVMConnection.dispatch(MsgAbbrevJVMConnection.java:446)
at weblogic.rjvm.t3.MuxableSocketT3.dispatch(MuxableSocketT3.java:368)
at weblogic.socket.AbstractMuxableSocket.dispatch(AbstractMuxableSocket.java:378)
at weblogic.socket.NTSocketMuxer.processSockets(NTSocketMuxer.java:105)
at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:42)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
在网上查了一下,是weblogic的域信任问题,配置地址
http://edocs.weblogicfans.net/wls/docs92/secmanage/domain.html;
配置域信任的过程如下:
1、在本地的weblogic 工作窗口中,点击本地域名(myDomain),点击Security选项卡;
2、勾选Cross Domain Security Enabled(跨域安全许可),启动许可;
3、在高级设置部分,填写Credential和Confirm Credential(安全密码);
这样的话,weblogic的远程队列就可以使用了。