olá galera, primeiramente, sou novato neste assunto. E preciso de uma ajuda daqueles que sabem orientar.
já procurei soluções no google, mas não consegui compreender o assunto. por isso, tenho muitas dúvidas, se alguém puder me ajudar, agradeço.
estou trabalhando com mensageria, E PARA ISSO ESTOU USANDO AS SEGUINTES FERRAMENTAS:
Eclipse;
jboss4.0.5
preciso trocar mensagens entre o Webphere e jboss na mesma rede. (visão de negócio que não depende de mim)
então, criei um teste:
No SourceFolder está as classes
EDBclient.java
EdbMDB.java
context/WEB-INF:
ejb-jar.xml
jboss.xml
segue os códigos:
-------------package teste.Edb;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
public class EDBclient {
public static void main(String[] args) throws Exception {
Context ctx = new InitialContext(System.getProperties());
QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");
QueueConnection connection = factory.createQueueConnection();
QueueSession session = connection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
Queue queue = (Queue) ctx.lookup("queue/TESTEQueue");
QueueSender sender = session.createSender(queue);
TextMessage msg = session.createTextMessage();
msg.setText("Teste Message DriveBean .");
sender.send(msg);
}
}
package teste.MDB;
import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class EdbMDB implements MessageDrivenBean, MessageListener{
protected MessageDrivenContext ctx;
public void setMessageDrivenContext(MessageDrivenContext ctx) {
this.ctx = ctx;
}
public void ejbRemove() throws EJBException {
System.err.println("ejbRemove()");
}
public void onMessage(Message msg) {
TextMessage tm = (TextMessage) msg;
try {
String text = tm.getText();
System.err.println("Received new message : " + text);
} catch(JMSException e) {
e.printStackTrace();
}
}
}
jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
<enterprise-beans>
<message-driven>
<ejb-name>EdbMDB</ejb-name>
<destination-jndi-name>queue/TESTEQueue</destination-jndi-name>
</message-driven>
</enterprise-beans>
</jboss>
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>
<message-driven>
<ejb-name>EdbMDB</ejb-name>
<ejb-class>teste.MDB.EdbMDB</ejb-class>
<transaction-type>Container</transaction-type>
<acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
</message-driven>
</enterprise-beans>
</ejb-jar>
jms.connectionfactory=??????? oq vai aki?
jms.initialcontextfactory=?????????? oq vai aki?
jms.resource.queue=??????????? oq vai aki?
jms.jndi.providerurl=??????????? oq vai aki?
security.principal=??????????? oq vai aki?
security.credentials=??????????? oq vai aki?
ERRO no ECLIPSE é: "Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial"
No que estou falhando e como corrigir????????
grato a todos.