This kind of client stuff needs config (resource config through system prop
basically), think there are some other threads on the list dealing with it.
Le 13 avr. 2013 02:01, "TomeeUser" <[email protected]> a écrit :
> I created a simple message bean from example and tried to connect it from
> remote. but getting error not able to connect. Getting Null pointer. Below
> is the code: Please help
> /*
> * To change this template, choose Tools | Templates
> * and open the template in the editor.
> */
> package com.xerox.TomEE.beans;
>
> import javax.annotation.Resource;
> import javax.ejb.MessageDriven;
> import javax.jms.Connection;
> import javax.jms.ConnectionFactory;
> import javax.jms.DeliveryMode;
> import javax.jms.JMSException;
> import javax.jms.Message;
> import javax.jms.MessageListener;
> import javax.jms.MessageProducer;
> import javax.jms.Queue;
> import javax.jms.Session;
> import javax.jms.TextMessage;
>
> /**
> *
> *
> */
> @MessageDriven
> public class CachedInfoMessageHandlerBean implements MessageListener
> {
> //@Resource
> @Resource(name = "CachedInfoMessageHandlerBeanFactory", type =
> ConnectionFactory.class)
> private ConnectionFactory connectionFactory;
>
> @Resource(name = "AnswerQueue")
> private Queue answerQueue;
>
> @Override
> public void onMessage(Message message) {
> try {
>
> final TextMessage textMessage = (TextMessage) message;
> final String question = textMessage.getText();
>
> if ("Hello World!".equals(question))
> {
> respond("Hello, Test Case!");
> } else if ("How are you?".equals(question))
> {
> respond("I'm doing well.");
> } else if ("Still spinning?".equals(question))
> {
> respond("Once every day, as usual.");
> }
> } catch (JMSException e) {
> throw new IllegalStateException(e);
> }
> }
>
> private void respond(String text) throws JMSException
> {
> Connection connection = null;
> Session session = null;
>
> try {
> connection = connectionFactory.createConnection();
> connection.start();
>
> // Create a Session
> session = connection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>
> // Create a MessageProducer from the Session to the Topic or
> Queue
> MessageProducer producer = session.createProducer(answerQueue);
> producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
>
> // Create a message
> TextMessage message = session.createTextMessage(text);
>
> // Tell the producer to send the message
> producer.send(message);
> } finally
> {
> // Clean up
> if (session != null)
> {
> session.close();
> }
> if (connection != null)
> {
> connection.close();
> }
> }
> }
> }
>
> Client code :
> /*
> * To change this template, choose Tools | Templates
> * and open the template in the editor.
> */
> package tomeeappclient;
>
> import com.xerox.TomEE.headers.*;
> import java.util.Properties;
> import javax.annotation.Resource;
> import javax.jms.Connection;
> import javax.jms.ConnectionFactory;
> import javax.jms.JMSException;
> import javax.jms.MessageConsumer;
> import javax.jms.MessageProducer;
> import javax.jms.Queue;
> import javax.jms.Session;
> import javax.jms.TextMessage;
> import javax.naming.Context;
> import javax.naming.InitialContext;
>
> /**
> *
> *
> */
> public class TomEEAppClient
> {
> // @Resource
> // @Resource(name = "jms/CachedInfoMessageHandlerBeanFactory", type =
> ConnectionFactory.class)
>
> @Resource
> private ConnectionFactory connectionFactory;
>
> @Resource(name = "CachedInfoMessageHandlerBeanFactory")
> private Queue questionQueue;
>
> @Resource(name = "AnswerQueue")
> private Queue answerQueue;
> /**
> * @param args the command line arguments
> */
> public static void main(String[] args) throws Exception
> {
> TomEEAppClient client = new TomEEAppClient();
> client.process();
> }
> private void process() throws Exception
> {
> // TODO code application logic here
> Properties p = new Properties();
> p.put("java.naming.factory.initial",
> "org.apache.openejb.client.RemoteInitialContextFactory");
> p.put("java.naming.provider.url",
> "http://127.0.0.1:8080/tomee/ejb");
> //p.put(Context.PROVIDER_URL, "ejbd://127.0.0.1:61616");
> InitialContext ctx = new InitialContext(p);
>
> CalculatorRemote calc = (CalculatorRemote)
> ctx.lookup("CalculatorBeanRemote");
>
>
> System.out.println( calc.add(10, 10) );
> // System.out.println( calc.divide(4, 2) );
>
> // String factory = "remote:CachedInfoMessageHandlerBeanFactory";
> // javax.jms.ConnectionFactory cf = (ConnectionFactory)
> ctx.lookup(factory);
> // final Connection connection = cf.createConnection();
>
>
> final Connection connection = connectionFactory.createConnection();
>
> connection.start();
>
> final Session session = connection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
> final MessageProducer questions =
> session.createProducer(questionQueue);
> final MessageConsumer answers =
> session.createConsumer(answerQueue);
>
> sendText("Hello World!", questions, session);
>
> // assertEquals("Hello, Test Case!", receiveText(answers));
> String answer = receiveText(answers);
> System.out.println("Answer received : " + answer);
>
>
> }
>
> private void sendText(String text, MessageProducer questions, Session
> session) throws JMSException {
>
> questions.send(session.createTextMessage(text));
> }
>
> private String receiveText(MessageConsumer answers) throws JMSException
> {
>
> return ((TextMessage) answers.receive(1000)).getText();
> }
> }
>
> Error :
>
> C:\AppServers\tomee\webapps>java -jar
> "C:\experiments\TomEEAppClient\dist\TomEEAppClient.jar"
> Apr 12, 2013 5:27:59 PM org.apache.openejb.client.EventLogger log
> INFO:
> RemoteInitialContextCreated{providerUri=http://127.0.0.1:8080/tomee/ejb}
> 20
> Exception in thread "main" java.lang.NullPointerException
> at tomeeappclient.TomEEAppClient.process(TomEEAppClient.java:66)
> at tomeeappclient.TomEEAppClient.main(TomEEAppClient.java:44)
>
>
>
>
>
> --
> View this message in context:
> http://openejb.979440.n4.nabble.com/Can-not-connect-to-Message-Bean-from-remote-client-Null-pointer-tp4662203.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.
>