0

Glassfish V3 JMS キューのスタンドアロン クライアントとして機能するクラスがあります。このクラスはローカルホストから正常に動作します。つまり、glassfish サーバーとスタンドアロン クライアントの両方がローカル PC にあります。

次に、このクライアントを Linux マシンにインストールする必要があります。Glassfish V3 は、この Linux マシンで既に実行されています。私はappserv-rt.jarglassfishのインストールディレクトリから追加し、standlaoneクライアントのディレクトリに追加してクラスパスを設定しました。しかし、私はこのエラーを受け取り続けます:

javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory]
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:657)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
        at javax.naming.InitialContext.init(InitialContext.java:223)
        at javax.naming.InitialContext.<init>(InitialContext.java:197)
        at com.cisco.zbl.controller.ZblBulkUploadThread.run(ZblBulkUploadThread.java:55)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:654)
        ... 5 more

ここに私のJavaコードがあります:

  public class ZblBulkUploadThread implements Runnable,MessageListener{

    private static final Category log = Category.getInstance(ZblBulkUploadThread.class) ;


            private Queue queue;

    public void run()
    {
            try
            {
                    ZblConfig zblConfig = new ZblConfig() ;


                    InitialContext jndiContext = null;

                    MessageConsumer messageConsumer=null;

                    Properties props = new Properties();
            props.setProperty("java.naming.factory.initial",  "com.sun.enterprise.naming.SerialInitContextFactory");
            props.setProperty("java.naming.factory.url.pkgs",  "com.sun.enterprise.naming");
            props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");

                    jndiContext = new InitialContext(props);

                    log.debug(zblConfig.getProperty("JMSConnectionFactoryName")) ;

                    //System.setProperty("java.naming.factory.initial","com.sun.jndi.ldap.LdapCtxFactory");

                    ConnectionFactory connectionFactory = (ConnectionFactory)jndiContext.lookup(zblConfig.getProperty("JMSConnectionFactoryName"));


                    Connection connection = connectionFactory.createConnection();


                    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

                    queue = (Queue)jndiContext.lookup(zblConfig.getProperty("JMSQueueName")) ;

                    messageConsumer = session.createConsumer(queue);

                    connection.start();

                    while(true)
                    {

                            Message message = messageConsumer.receive() ;


                            ObjectMessage om = ((ObjectMessage)message) ;
                            try
                            {

                                    RedirectFile file = (RedirectFile)om.getObject() ;

                                    log.debug("filePath "+file.getFilePath()) ;
                                    log.debug(" userName "+file.getUserName()) ;
                                    log.debug(" mode is "+file.getMode()) ;

                                    processMessage(file,zblConfig) ;

                            }
                            catch(Exception ex)
                            {
                                    log.error("ERROR "+ex.getMessage()) ;
                                    ex.printStackTrace() ;
                            }
                    }


            }
            catch(Exception ex)
            {

                    ex.printStackTrace() ;
                    log.error("Error "+ex.getMessage()) ;
            }
    }

エラーは次の行にあります。jndiContext = new InitialContext(props);

の引数なしコンストラクタを使用しても違いはありませんInitialContext

これは、この Java プログラム (スタンドアロン クライアント) を呼び出す UNIX シェル スクリプトです。

  APP_HOME=/local/scripts/apps/bulkUpload;

CLASSPATH=.:$APP_HOME/lib/gf-client.jar:$APP_HOME/lib/zbl.jar:$APP_HOME/lib/log4j-   1.2.4.jar:$APP_HOME/lib/javaee.jar:$APP_HOME/lib/poi-3.8-beta5-20111217.jar:$APP_HOME/lib/poi-examples-3.8-beta5-20111217:$APP_HOME/lib/poi-excelant-3.8-beta5-20111217:$APP_HOME/lib/poi-ooxml-3.8-beta5-20111217:$APP_HOME/lib/poi-ooxml-schemas-3.8-beta5-20111217:$APP_HOME/lib/poi-scratchpad-3.8-beta5-20111217:$APP_HOME/lib/appserv-rt.jar:


 echo "CLASSPATH=$CLASSPATH";

 export APP_HOME;
 export CLASSPATH;

 cd $APP_HOME;

 #javac -d . ZblBulkUploadThread.java

 java -cp $CLASSPATH -Dzbl.properties=zbl-stage.properties    -Djava.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory com.cisco.zbl.controller.ZblBulkUploadThread

助けてください - 私は長い間この問題に悩まされてきました。

4

1 に答える 1

0

コマンドを実行して、which java jdk が正しく取得されているかどうかを確認します。Linuxがgc4jを選んでいるとは思えません

アップデート:

この行 CLASSPATH=.:$APP_HOME/lib/gf-client.jar:$APP_HOME/lib/zbl.jar:$APP_HOME/lib/log4j- 1.2.4.jar:$APP_HOME/lib/javaee.jar:$APP_HOME/lib/poi-3.8-beta5-20111217.jar:$APP_HOME/lib/poi-examples-3.8-beta5-20111217:$APP_HOME/lib/poi-excelant-3.8-beta5-20111217:$APP_HOME/lib/poi-ooxml-3.8-beta5-20111217:$APP_HOME/lib/poi-ooxml-schemas-3.8-beta5-20111217:$APP_HOME/lib/poi-scratchpad-3.8-beta5-20111217:$APP_HOME/lib/appserv-rt.jar:

CLASSPATH=.:$APP_HOME/lib/gf-client.jar:$APP_HOME/lib/zbl.jar:$APP_HOME/lib/log4j-   1.2.4.jar:$APP_HOME/lib/javaee.jar:$APP_HOME/lib/poi-3.8-beta5-20111217.jar:$APP_HOME/lib/poi-examples-3.8-beta5-20111217:$APP_HOME/lib/poi-excelant-3.8-beta5-20111217:$APP_HOME/lib/poi-ooxml-3.8-beta5-20111217:$APP_HOME/lib/poi-ooxml-schemas-3.8-beta5-20111217:$APP_HOME/lib/poi-scratchpad-3.8-beta5-20111217:$APP_HOME/lib/appserv-rt.jar
于 2012-04-27T00:57:28.223 に答える