2017-08-19 5 views
0

Ich habe eine MDB Bean erstellt und in Glassfish 4 bereitgestellt und Anwendung wurde erfolgreich bereitgestellt, aber ich versuche, Nachricht in die Warteschlange mit einem eigenständigen Client zu stellen. Und ich bekomme diesen Fehler.MDB-Projekt erstellt und implementiert, aber nicht in der Lage, Lookup von einem eigenständigen Programm

** java.lang.NullPointerException bei com.sun.enterprise.naming.impl.SerialContext.getORB (SerialContext.java:347) javax.naming.NamingException: Lookup fehlgeschlagen für 'jms/myQueue' in SerialContext [myEnv = {java.naming.provider.url = iiop: // lokaler Host: 3700, java.naming.factory.initial = com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state = com.sun. corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming} [Stammausnahme ist javax.naming.NamingException: SerialContextProvider für SerialContext kann nicht abgerufen werden [myEnv = { java.naming.provider.url = iiop: // localhost: 3700, java.naming.factory.initial = com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee. impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.fac tory.url.pkgs = com.sun.enterprise.naming} [Root-Ausnahme ist java.lang.NullPointerException]]

Verursacht von: javax.naming.NamingException: SerialContextProvider für SerialContext kann nicht abgerufen werden [myEnv = {java. naming.provider.url = iiop: // lokaler Host: 3700, java.naming.factory.initial = com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl. presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming} [Root Ausnahme ist java.lang.NullPointerException] **

MDB Klasse Code ::

package test; 

import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.ejb.ActivationConfigProperty; 
import javax.ejb.MessageDriven; 
import javax.jms.JMSException; 
import javax.jms.Message; 
import javax.jms.MessageListener; 
import javax.jms.TextMessage; 

@MessageDriven(activationConfig = { 
    @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "jms/myQueue") 
    , 
     @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") 
    , 
     @ActivationConfigProperty(propertyName = "connectionFactoryLookup", propertyValue = "jms/myConnectionFactory") 
}) 
public class testMDB1 implements MessageListener { 

    public testMDB1() { 
    } 

    @Override 
    public void onMessage(Message message) { 
     if (message instanceof TextMessage) { 
      TextMessage t = (TextMessage) message; 
      try { 
       System.out.println("ye le " + t.getText()); 
      } catch (JMSException ex) { 
       Logger.getLogger(TestMDB.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
    } 

} 

und die Client-Datei ist

package test; 
import java.util.Properties; 
import javax.jms.ConnectionFactory; 
import javax.jms.JMSContext; 
import javax.jms.JMSProducer; 
import javax.jms.Queue; 
import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 

public class TestClient { 

    public static void main(String[] args) { 

     try { 

      final Properties env = new Properties(); 
      env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory"); 
      env.put(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming"); 
      env.put(Context.PROVIDER_URL, "iiop://localhost:3700"); 
      Context remoteContext = new InitialContext(env); 
      System.out.println("remote context" + remoteContext.getEnvironment()); 
      Queue queue = (Queue) remoteContext.lookup("jms/myQueue"); 
      JMSContext jmsContext = ((ConnectionFactory) remoteContext.lookup("jms/myConnectionFactory")).createContext(); 
      JMSProducer producer = jmsContext.createProducer(); 
      producer.send(queue, "hello "); 
      System.out.println("1. Sent TextMessage to the Queue"); 

     } catch (NamingException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

I gf-client.jar, Kugel-iiop.jar und appserv-rt.jar aber nichts löst mein Problem hinzugefügt haben.

Antwort

1

Ich habe erfahren, dass glassfish 4.1 diesen Fehler hat, wo lokale Clients keine Verbindung zur MDB herstellen können. Ich habe das gleiche mit zwei EJB-Projekten versucht und es funktioniert gut.

Verwandte Themen