Hi all; i have some MDBs; i want that these MDBs are listening on a remote topic on a server with ip address: 192.168.xxx.yyy; now by following tips in this link: http://www.jboss.org/wiki/Wiki.jsp?page=HowDoIConfigureAnMDBToTalkToARemoteQueue i have these files ( note: i'm using JBoss 3.2.5 ):
jboss-service.xml: anonymous wrote : | <?xml version="1.0" encoding="UTF-8"?> | <!DOCTYPE server PUBLIC "-//JBoss//DTD MBean Service 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss-service_3_2.dtd"> | | | <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager | <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager | | | RemoteJMSProvider | org.jboss.jms.jndi.JNDIProviderAdapter | XAConnectionFactory | XAConnectionFactory | java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory | java.naming.factory.url.pkgs=org.jnp.interfaces | java.naming.provider.url=192.168.xxx.yyy:1099 | | | | jboss.xml: anonymous wrote : | <?xml version="1.0" encoding="UTF-8"?> | <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd"> | | <enterprise-beans> | <message-driven> | <ejb-name>TestBean</ejb-name> | <destination-jndi-name>topic/angelo</destination-jndi-name> | | <!-- I must include this if not the deployment fails --> | <mdb-subscription-id>mySubscription</mdb-subscription-id> | <invoker-bindings> | | <invoker-proxy-binding-name>RemoteTopic</invoker-proxy-binding-name> | <jndi-name>topic/angelo</jndi-name> | | </invoker-bindings> | </message-driven> | </enterprise-beans> | <invoker-proxy-bindings> | <invoker-proxy-binding> | RemoteTopic | <invoker-mbean>remote</invoker-mbean> | <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory> | <proxy-factory-config> | RemoteJMSProvider | StdJMSPool | 1 | 30000 | 1 | | 10 | | queue/DLQ | 10 | 0 | | | </proxy-factory-config> | </invoker-proxy-binding> | </invoker-proxy-bindings> | ejb-jar.xml: anonymous wrote : <?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> | <display-name>TestBeanJMS</display-name> | <enterprise-beans> | <message-driven> | <ejb-name>TestBean</ejb-name> | <ejb-class>testjms.TestBean</ejb-class> | <transaction-type>Container</transaction-type> | <message-driven-destination> | <destination-type>javax.jms.Topic</destination-type> | <subscription-durability>Durable</subscription-durability> | </message-driven-destination> | </message-driven> | </enterprise-beans> | <assembly-descriptor> | <container-transaction> | | <ejb-name>TestBean</ejb-name> | <method-name>*</method-name> | | <trans-attribute>Required</trans-attribute> | </container-transaction> | </assembly-descriptor> | </ejb-jar> This is my sample MDB code: package testjms; | | import javax.ejb.MessageDrivenBean; | import javax.jms.MessageListener; | import javax.ejb.MessageDrivenContext; | import javax.ejb.CreateException; | import javax.jms.Message; | | public class TestBean implements MessageDrivenBean, MessageListener { | MessageDrivenContext messageDrivenContext; | public void ejbCreate() { | } | | public void ejbRemove() { | } | | public void onMessage(Message message) { | | System.out.println( "Ricevuto: "+ message ); | } | | public void setMessageDrivenContext(MessageDrivenContext | messageDrivenContext) { | this.messageDrivenContext = messageDrivenContext; | } | } this is my publisher code ( generated by JBuilder ): package testjms; | | import javax.naming.InitialContext; | import javax.jms.MessageListener; | import javax.naming.Context; | import javax.jms.TopicConnectionFactory; | import javax.jms.TopicConnection; | import javax.jms.TopicSession; | import javax.jms.TopicPublisher; | import javax.jms.TopicSubscriber; | import javax.jms.Topic; | import javax.naming.NamingException; | import java.util.Hashtable; | import java.io.Serializable; | import javax.jms.Message; | | /** | <p>Title: </p> | | <p>Description: </p> | | <p>Copyright: Copyright (c) 2004</p> | | <p>Company: </p> | | @author not attributable | @version 1.0 | | | * Use this class to publish and subscribe to messages. | * To send a text message: | * <code> | * Test test = new Test(); | * test.publishText("Hello world"); | * test.close(); //Release resources | * </code> | | * To receive a message: | * <code> | * Test test = new Test(); | * test.getTopicSubscriber(); | * </code> | */ | public class Test implements MessageListener { | private static Context context; | private boolean transacted = false; | private int acknowledgementMode = javax.jms.Session.AUTO_ACKNOWLEDGE; | private TopicConnectionFactory topicConnectionFactory; | private TopicConnection topicConnection; | private TopicSession topicSession; | private TopicPublisher topicPublisher; | private TopicSubscriber topicSubscriber; | private Topic topic; | private String topicConnectionFactoryName = "ConnectionFactory"; | private String publishTopicName = "angelo"; | private String subscribeTopicName = "angelo"; | private String clientId = "angeloClient"; | private String durableName = "test"; | private boolean durable = true; | public void setTransacted(boolean transacted) { | this.transacted = transacted; | } | | public TopicSubscriber getTopicSubscriber() throws Exception { | if (topicSubscriber == null) { | if (isDurable()) { | topicSubscriber = getTopicSession(true).createDurableSubscriber( | getSubscribeTopic(), getDurableName()); | } else { | topicSubscriber = getTopicSession(true).createSubscriber( | getSubscribeTopic()); | } | topicSubscriber.setMessageListener(this); | getTopicConnection(true).start(); | } | return topicSubscriber; | } | | public TopicPublisher getTopicPublisher() throws Exception { | if (topicPublisher == null) { | topicPublisher = getTopicSession(false).createPublisher( | getPublishTopic()); | } | return topicPublisher; | } | | public Topic getPublishTopic() throws Exception { | if (topic == null) { | Object obj = getContext().lookup(publishTopicName); | topic = (Topic) obj; | } | return topic; | } | | public TopicSession getTopicSession(boolean consumer) throws Exception { | if (topicSession == null) { | topicSession = getTopicConnection(consumer).createTopicSession( | isTransacted(), getAcknowledgementMode()); | } | return topicSession; | } | | public TopicConnection getTopicConnection(boolean consumer) throws | Exception { | if (topicConnection == null) { | topicConnection = getTopicConnectionFactory().createTopicConnection(); | topicConnection.start(); | if (isDurable() && consumer) { | topicConnection.setClientID(clientId); | } | } | return topicConnection; | } | | public TopicConnectionFactory getTopicConnectionFactory() throws Exception { | if (topicConnectionFactory == null) { | Object obj = getContext().lookup(topicConnectionFactoryName); | topicConnectionFactory = (TopicConnectionFactory) obj; | } | return topicConnectionFactory; | } | | public void setDurable(boolean durable) { | this.durable = durable; | } | | public boolean isDurable() { | return durable; | } | | public void setDurableName(String durableName) { | this.durableName = durableName; | } | | public String getDurableName() { | return durableName; | } | | public void setClientId(String clientId) { | this.clientId = clientId; | } | | public String getClientId() { | return clientId; | } | | public void setSubscribeTopicName(String subscribeTopicName) { | this.subscribeTopicName = subscribeTopicName; | } | | public String getSubscribeTopicName() { | return subscribeTopicName; | } | | public void setPublishTopicName(String publishTopicName) { | this.publishTopicName = publishTopicName; | } | | public String getPublishTopicName() { | return publishTopicName; | } | | public void setTopicConnectionFactoryName(String topicConnectionFactoryName) { | this.topicConnectionFactoryName = topicConnectionFactoryName; | } | | public String getTopicConnectionFactoryName() { | return topicConnectionFactoryName; | } | | public void setAcknowledgementMode(int acknowledgementMode) { | this.acknowledgementMode = acknowledgementMode; | } | | public int getAcknowledgementMode() { | return acknowledgementMode; | } | | public boolean isTransacted() { | return transacted; | } | | private Context getInitialContext() throws NamingException { | Hashtable environment = new Hashtable(); | | environment.put(Context.INITIAL_CONTEXT_FACTORY, | "org.jnp.interfaces.NamingContextFactory"); | environment.put(Context.URL_PKG_PREFIXES, | "org.jboss.naming:org.jnp.interfaces"); | environment.put(Context.PROVIDER_URL, "jnp://localhost:1099"); | | return new InitialContext(environment); | } | | private Context getContext() throws Exception { | if (context == null) { | try { | context = getInitialContext(); | } catch (Exception ex) { | ex.printStackTrace(); | throw ex; | } | } | return context; | } | | public Topic getSubscribeTopic() throws Exception { | if (topic == null) { | Object obj = getContext().lookup(subscribeTopicName); | topic = (Topic) obj; | } | return topic; | } | | public void publishText(String message) throws Exception { | javax.jms.TextMessage textMessage = getTopicSession(false). | createTextMessage(); | textMessage.clearBody(); | textMessage.setText(message); | getTopicPublisher().publish(textMessage); | if (isTransacted()) { | getTopicSession(false).commit(); | } | } | | public void publishObject(Serializable message) throws Exception { | javax.jms.ObjectMessage objectMessage = getTopicSession(false). | createObjectMessage(); | objectMessage.clearBody(); | objectMessage.setObject(message); | getTopicPublisher().publish(objectMessage); | if (isTransacted()) { | getTopicSession(false).commit(); | } | } | | public void onMessage(Message message) { | if (message instanceof javax.jms.BytesMessage) { | javax.jms.BytesMessage bytesMessage = (javax.jms.BytesMessage) | message; | /** @todo Process bytesMessage here */ | } else if (message instanceof javax.jms.MapMessage) { | javax.jms.MapMessage mapMessage = (javax.jms.MapMessage) message; | /** @todo Process mapMessage here */ | } else if (message instanceof javax.jms.ObjectMessage) { | javax.jms.ObjectMessage objectMessage = (javax.jms.ObjectMessage) | message; | /** @todo Process objectMessage here */ | } else if (message instanceof javax.jms.StreamMessage) { | javax.jms.StreamMessage streamMessage = (javax.jms.StreamMessage) | message; | /** @todo Process streamMessage here */ | } else if (message instanceof javax.jms.TextMessage) { | javax.jms.TextMessage objectMessage = (javax.jms.TextMessage) | message; | /** @todo Process textMessage here */ | } | if (isTransacted()) { | try { | getTopicSession(false).commit(); | } catch (Exception ex) { | ex.printStackTrace(); | } | } | } | | public void close() throws Exception { | if (topicPublisher != null) { | topicPublisher.close(); | } | if (topicSubscriber != null) { | topicSubscriber.close(); | } | if (topicSession != null) { | topicSession.close(); | } | if (topicConnection != null) { | topicConnection.close(); | } | } | | public static void main(String[] args) { | | Test test = new Test(); | try { | test.publishText("Hello world"); | test.close(); //Release resources | } catch (Exception ex) { | } | | } | } It seems to me that all is correct, infact i have no error o warning, but the MDB receive no message.... can anybody tell me where i'm wrong? Thanks to all View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3857030#3857030 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3857030 ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user
