Java Azure Windows VM上的GlassFish-连接失败

Java Azure Windows VM上的GlassFish-连接失败,java,azure,glassfish,jms-topic,Java,Azure,Glassfish,Jms Topic,我在Azure Windows VM上安装了一个GlassFish 4.0 web服务器,它将用作JMS消息代理 关于玻璃鱼,我有两种资源: 连接工厂:GFConnectionFactory,类型为javax.jms.TopicConnectionFactory 目的地:myTopic,类型为javax.jms.Topic 在我的VM的网络安全组上,我有以下入站规则: 当我启动VM+Glassfish并尝试查找该主题时,会出现以下错误: org.omg.CORBA.COMM_FAILURE: F

我在Azure Windows VM上安装了一个GlassFish 4.0 web服务器,它将用作JMS消息代理

关于玻璃鱼,我有两种资源:
连接工厂:GFConnectionFactory,类型为javax.jms.TopicConnectionFactory
目的地:myTopic,类型为javax.jms.Topic

在我的VM的网络安全组上,我有以下入站规则:

当我启动VM+Glassfish并尝试查找该主题时,会出现以下错误:

org.omg.CORBA.COMM_FAILURE: FINE: 00410001: Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: localhost; port: 3700  vmcid: OMG  minor code: 1  completed: No
    at com.sun.proxy.$Proxy17.connectFailure(Unknown Source)
    at com.sun.corba.ee.impl.transport.ConnectionImpl.<init>(ConnectionImpl.java:253)
    at com.sun.corba.ee.impl.transport.ConnectionImpl.<init>(ConnectionImpl.java:276)
    at com.sun.corba.ee.impl.transport.ContactInfoImpl.createConnection(ContactInfoImpl.java:129)
    at com.sun.corba.ee.impl.protocol.ClientRequestDispatcherImpl.beginRequest(ClientRequestDispatcherImpl.java:243)
    at com.sun.corba.ee.impl.protocol.ClientDelegateImpl.request(ClientDelegateImpl.java:227)
    at com.sun.corba.ee.impl.protocol.ClientDelegateImpl.is_a(ClientDelegateImpl.java:392)
    at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:130)
    at org.omg.CosNaming.NamingContextHelper.narrow(NamingContextHelper.java:69)
    at com.sun.enterprise.naming.impl.SerialContext$ProviderCacheKey.getNameService(SerialContext.java:1205)
    at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:393)
    at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:329)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:477)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at gla.prisoft.monitor.PSatMonitor.main(PSatMonitor.java:45)
Caused by: java.lang.RuntimeException: java.net.ConnectException: Connection refused: connect
    at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:344)
    at com.sun.corba.ee.impl.transport.ConnectionImpl.<init>(ConnectionImpl.java:250)
... 14 more
Caused by: java.net.ConnectException: Connection refused: connect
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Net.java:454)
    at sun.nio.ch.Net.connect(Net.java:446)
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648)
    at com.sun.corba.ee.impl.misc.ORBUtility.openSocketChannel(ORBUtility.java:110)
    at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:329)
... 15 more  
我不明白为什么它仍然试图连接到本地主机而不是我指定的IP

问题出在虚拟机配置上(我已尝试打开所有端口并关闭防火墙等),我可以通过cmd的“telnet 13.90.159.219 3700”从本地计算机上的浏览器成功连接

我还尝试将主题指定为“corbaname:iiop:host:port#a/b/name”


如果您有任何帮助或想法,我们将不胜感激

根据我的经验,我认为在NSG中不允许GlassFish需要的一些帖子,正如你所说,如果打开所有端口并关闭防火墙(我认为你所说的防火墙在Windows上),那么连接就可以工作

我的建议是,您可以尝试在Azure VM上使用以下命令
jps
&
netstat
,以发现GlassFish中使用的所有端口,然后允许这些端口在NSG和Windows防火墙中进行入站连接

  • 在CMD上使用命令
    jps
    将所有Java进程id列为
    list1
  • 使用命令
    netstat-apn
    LISTEN
    的所有端口和
    PID
    列为
    list2

  • 然后,找出这些
    PID
    ,它们列在
    列表1
    列表2
    中,并允许它们出现在NSG和Windows防火墙中。

    感谢您的建议,不幸的是,它没有帮助:(必须是glassfish提供的东西。)
    public static Context getInitialContext() throws NamingException{
            Properties properties = new Properties();
            properties.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
            properties.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
            //properties.setProperty("java.naming.provider.url", "iiop://localhost:3700");
            //properties.setProperty("java.naming.provider.url", "iiop://13.90.159.219:3700");
            properties.setProperty("java.naming.provider.url", "13.90.159.219:3700");
    //      properties.setProperty("org.omg.CORBA.ORBInitialHost", "13.90.159.219");
    //      properties.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
            return new InitialContext(properties);
        }
    public static void main(String []args ) throws NamingException{
            String topicname = "myTopic";
            Context initialContext = getInitialContext();
            topic = (Topic)initialContext.lookup(topicname);
            jmsContext = ((ConnectionFactory)initialContext.lookup("GFConnectionFactory")).createContext();