Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WebStart客户端可以';我不能得到玻璃鱼_Java_Jms_Jndi_Java Web Start_Jnlp - Fatal编程技术网

Java WebStart客户端可以';我不能得到玻璃鱼

Java WebStart客户端可以';我不能得到玻璃鱼,java,jms,jndi,java-web-start,jnlp,Java,Jms,Jndi,Java Web Start,Jnlp,我渴望得到任何建议。我至少读过一百篇帖子。但我找不到一个能解决我认为是一个小问题的方法 Java客户端如何从glassfish服务器获取InitialContext ... 何时使用WebStart的JNLP下载客户端 下面的类仅从Java GUI中提取相关代码,该GUI需要与Glassfish部署到handleC持久性的MessageDrivenBean进行JMS通信 该类使用两组属性两次尝试获取glassfish InitialContext: 试试一个:InitialContext(env

我渴望得到任何建议。我至少读过一百篇帖子。但我找不到一个能解决我认为是一个小问题的方法

Java客户端如何从glassfish服务器获取InitialContext ... 何时使用WebStart的JNLP下载客户端

下面的类仅从Java GUI中提取相关代码,该GUI需要与Glassfish部署到handleC持久性的MessageDrivenBean进行JMS通信

该类使用两组属性两次尝试获取glassfish InitialContext:

试试一个:InitialContext(envOne)。这是可行的,所以我知道Glassfish有一个正确配置的ConnectionFactory,名为“jms/goConnectionFactory”。不幸的是,该属性集使用了存储在Glassfish目录中的文件。当客户端通过JNLP下载时,这将不可用

尝试两个:InitialContext(envTwo)。这对位于任何URL的Glassfish都应该有效,但它失败了。我不知道为什么

类代码粘贴在下面

然后是控制台输出(little helper方法只是格式化控制台输出)

供参考: 我在开发PC上从Eclipse运行了StackTraceExample.main()。 在本例中,Glassfish在开发PC上的“localhost”下运行

任何帮助都将不胜感激。现在我已经死在水里了

package org.america3.testclasses;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import com.sun.messaging.ConnectionFactory;

public class StackTraceExample {

  static public void main (String[] args) {
    InitialContext ctx = null;
    ConnectionFactory factory = null;

    //InitialContext environmental properties - set One
    Properties envOne = new Properties ();
    envOne.setProperty ("java.naming.factory.initial", "com.sun.jndi.fscontext.RefFSContextFactory");
    envOne.setProperty ("java.naming.provider.url","file:///C:/glassfish4/mq/opt/java/my_broker");      

    //InitialContext environmental properties - set One
    Properties envTwo = new Properties ();
    envTwo.setProperty(Context.INITIAL_CONTEXT_FACTORY,  "com.sun.enterprise.naming.impl.SerialInitContextFactory");
    envTwo.setProperty(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");
    envTwo.setProperty("org.omg.CORBA.ORBInitialPort","3700");
    envTwo.setProperty("org.omg.CORBA.ORBInitialHost","localHost");

    //Get ConnectionFactory - use set One properties
    try {
      p ("TRY ONE: Instantiating new ItialContext");
      ctx = new InitialContext(envOne);
      p("  InitialContext returned: " + ctx.getClass().getName());
      p("  InitialContext returned: " + ctx);
      // look up Connection Factory
      p("calling ctx.lookup()");
      factory = (ConnectionFactory) ctx.lookup("jms/goConnectionFactory");
      p("  ConnectionFactory returned: " + factory.getClass().getName());
      //System.out.println("  ConnectionFactory         : " + factory);
      printFactory(factory);
    } catch (Exception e1) {
      p("Caught exception: " + e1.getClass().getName());
      printST(e1.getStackTrace());
    }

    //Get ConnectionFactory - use set Two properties
    try {
      p ("\nTRY II: Instantiating new ItialContext");
      ctx = new InitialContext(envTwo);
      p ("  InitialContext returned: " + ctx.getClass().getName());
      p ("  InitialContext         : " + ctx);
      // look up Connection Factory
      p ("\ncalling ctx.lookup()");
      factory = (ConnectionFactory) ctx.lookup("jms/goConnectionFactory");
      p ("  ConnectionFactory returned: " + factory.getClass().getName());
      p ("  ConnectionFactory         : " + factory);
    } catch (Exception e2) {
      p ("\nCAUGHT EXCEPTION: " + e2.getClass().getName());
      p ("  MESSAGE       : " + e2.getMessage() + "\n");
      p ("  CAUSE         : " + e2.getCause() + "\n");
      p ("  STACK TRACE   : ");
    printST(e2.getStackTrace());
    }
  }

  static void printST (StackTraceElement[] trace) {
    for (StackTraceElement element : trace) {
      System.out.println(element);
    }
  }

  static void printFactory (ConnectionFactory  factory) {
    if (factory == null) return;
    char c = (char)10;
    System.out.println(factory.toString().replace('{', c).replace(',', c));
  }
}
这里是控制台输出

TRY ONE: Instantiating new ItialContext
  InitialContext returned: javax.naming.InitialContext
  InitialContext returned: javax.naming.InitialContext@72ea2f77
calling ctx.lookup()
  ConnectionFactory returned: com.sun.messaging.ConnectionFactory
Sun Java System MQ ConnectionFactory
Class:          com.sun.messaging.ConnectionFactory
getVERSION():       3.0
isReadonly():       true
getProperties():    
imqOverrideJMSPriority=false
 imqConsumerFlowLimit=1000
 imqOverrideJMSExpiration=false
 imqAddressListIterations=1
 imqLoadMaxToServerSession=true
 imqConnectionType=TCP
 imqPingInterval=30
 imqSetJMSXUserID=false
 imqConfiguredClientID=
 imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider
 imqJMSDeliveryMode=PERSISTENT
 imqConnectionFlowLimit=1000
 imqConnectionURL=http://localhost/imq/tunnel
 imqBrokerServiceName=
 imqJMSPriority=4
 imqBrokerHostName=localhost
 imqJMSExpiration=0
 imqAckOnProduce=
 imqEnableSharedClientID=false
 imqAckTimeout=0
 imqAckOnAcknowledge=
 imqConsumerFlowThreshold=50
 imqDefaultPassword=guest
 imqQueueBrowserMaxMessagesPerRetrieve=1000
 imqDefaultUsername=guest
 imqReconnectEnabled=false
 imqConnectionFlowCount=100
 imqAddressListBehavior=PRIORITY
 imqReconnectAttempts=0
 imqSetJMSXAppID=false
 imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler
 imqSetJMSXRcvTimestamp=false
 imqBrokerServicePort=0
 imqDisableSetClientID=false
 imqSetJMSXConsumerTXID=false
 imqOverrideJMSDeliveryMode=false
 imqBrokerHostPort=7676
 imqQueueBrowserRetrieveTimeout=60000
 imqSetJMSXProducerTXID=false
 imqSSLIsHostTrusted=false
 imqConnectionFlowLimitEnabled=false
 imqReconnectInterval=3000
 imqAddressList=
 imqOverrideJMSHeadersToTemporaryDestinations=false}

TRY II: Instantiating new ItialContext
  InitialContext returned: javax.naming.InitialContext
  InitialContext         : javax.naming.InitialContext@72d818d1

calling ctx.lookup()

CAUGHT EXCEPTION: javax.naming.NamingException
  MESSAGE       : Lookup failed for 'jms/goConnectionFactory' in SerialContext[myEnv={org.omg.CORBA.ORBInitial
Port=3700, java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, org.omg.CORBA.
ORBInitialHost=localHost, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImp
l, java.naming.factory.url.pkgs=com.sun.enterprise.naming}

  CAUSE         : javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEn
v={org.omg.CORBA.ORBInitialPort=3700, java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitCon
textFactory, org.omg.CORBA.ORBInitialHost=localHost, java.naming.factory.state=com.sun.corba.ee.impl.presentat
ion.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is java.
lang.NullPointerException]

  STACK TRACE   : 
com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
javax.naming.InitialContext.lookup(Unknown Source)
org.america3.testclasses.StackTraceExample.main(StackTraceExample.java:54)

{NOTE:  THIS BIT OF OUTPUT ORIGINATES ON THE System.err ... from something other than my class.  It shows up whereever it feels like in the normal System.out stream.}

java.lang.NullPointerException
    at com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext.java:347)
    at com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:354)
    at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:384)
    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(Unknown Source)
    at org.america3.testclasses.StackTraceExample.main(StackTraceExample.java:54)