JBOSS5.1 Configuration and Run(二)ObjectMessageBean
1. The message Bean trans from the point to point, AddressMessage.java:
package com.sillycat.mdb.entities;
import java.io.Serializable;
public class AddressMessage implements Serializable {
private static final long serialVersionUID = 3887312094158862657L;
private Integer id;
private String street;
private String country;
public AddressMessage() {
}
public AddressMessage(Integer id, String street, String country) {
this.id = id;
this.street = street;
this.country = country;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((country == null) ? 0 : country.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((street == null) ? 0 : street.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AddressMessage other = (AddressMessage) obj;
if (country == null) {
if (other.country != null)
return false;
} else if (!country.equals(other.country))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (street == null) {
if (other.street != null)
return false;
} else if (!street.equals(other.street))
return false;
return true;
}
}
2. the mdb bean AddressMDB.java:
package com.sillycat.mdb;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import com.sillycat.mdb.entities.AddressMessage;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/AddressQueue") })
public class AddressMDB implements MessageListener {
@Resource
private MessageDrivenContext mdc;
public void onMessage(Message msg) {
try {
if (msg instanceof ObjectMessage) {
ObjectMessage message = (ObjectMessage) msg;
AddressMessage addressMessage = null;
addressMessage = (AddressMessage) message.getObject();
System.out.println("street:" + addressMessage.getStreet());
}
} catch (Exception e) {
e.printStackTrace();
mdc.setRollbackOnly();
}
}
}
3. the Client bean AddressMessageClient.java:
package com.sillycat.mdb;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.naming.InitialContext;
import com.sillycat.mdb.entities.AddressMessage;
public class AddressMessageClient {
public static void main(String[] args) throws Exception {
QueueConnection cnn = null;
QueueSender sender = null;
QueueSession session = null;
InitialContext ctx = new InitialContext();
Queue queue = (Queue) ctx.lookup("queue/AddressQueue");
QueueConnectionFactory factory = (QueueConnectionFactory) ctx
.lookup("ConnectionFactory");
cnn = factory.createQueueConnection();
session = cnn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
sender = session.createSender(queue);
ObjectMessage address_message = session.createObjectMessage();
AddressMessage addressMessage = new AddressMessage();
addressMessage.setStreet("三官堂");
addressMessage.setCountry("China");
address_message.setObject(addressMessage);
sender.send(address_message);
System.out.println("Message sent successfully to remote queue.");
}
}
4.the configura xml in E:\jboss-5.1.0.GA\server\default\deploy\messaging\destinations-service.xml
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.messaging.destination:service=Queue,name=AddressQueue"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
<attribute name="JNDIName">queue/AddressQueue</attribute>
<attribute name="RedeliveryDelay">10000</attribute>
<attribute name="MaxDeliveryAttempts">3</attribute>
</mbean>
1. The message Bean trans from the point to point, AddressMessage.java:
package com.sillycat.mdb.entities;
import java.io.Serializable;
public class AddressMessage implements Serializable {
private static final long serialVersionUID = 3887312094158862657L;
private Integer id;
private String street;
private String country;
public AddressMessage() {
}
public AddressMessage(Integer id, String street, String country) {
this.id = id;
this.street = street;
this.country = country;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((country == null) ? 0 : country.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((street == null) ? 0 : street.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AddressMessage other = (AddressMessage) obj;
if (country == null) {
if (other.country != null)
return false;
} else if (!country.equals(other.country))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (street == null) {
if (other.street != null)
return false;
} else if (!street.equals(other.street))
return false;
return true;
}
}
2. the mdb bean AddressMDB.java:
package com.sillycat.mdb;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import com.sillycat.mdb.entities.AddressMessage;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/AddressQueue") })
public class AddressMDB implements MessageListener {
@Resource
private MessageDrivenContext mdc;
public void onMessage(Message msg) {
try {
if (msg instanceof ObjectMessage) {
ObjectMessage message = (ObjectMessage) msg;
AddressMessage addressMessage = null;
addressMessage = (AddressMessage) message.getObject();
System.out.println("street:" + addressMessage.getStreet());
}
} catch (Exception e) {
e.printStackTrace();
mdc.setRollbackOnly();
}
}
}
3. the Client bean AddressMessageClient.java:
package com.sillycat.mdb;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.naming.InitialContext;
import com.sillycat.mdb.entities.AddressMessage;
public class AddressMessageClient {
public static void main(String[] args) throws Exception {
QueueConnection cnn = null;
QueueSender sender = null;
QueueSession session = null;
InitialContext ctx = new InitialContext();
Queue queue = (Queue) ctx.lookup("queue/AddressQueue");
QueueConnectionFactory factory = (QueueConnectionFactory) ctx
.lookup("ConnectionFactory");
cnn = factory.createQueueConnection();
session = cnn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
sender = session.createSender(queue);
ObjectMessage address_message = session.createObjectMessage();
AddressMessage addressMessage = new AddressMessage();
addressMessage.setStreet("三官堂");
addressMessage.setCountry("China");
address_message.setObject(addressMessage);
sender.send(address_message);
System.out.println("Message sent successfully to remote queue.");
}
}
4.the configura xml in E:\jboss-5.1.0.GA\server\default\deploy\messaging\destinations-service.xml
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.messaging.destination:service=Queue,name=AddressQueue"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
<attribute name="JNDIName">queue/AddressQueue</attribute>
<attribute name="RedeliveryDelay">10000</attribute>
<attribute name="MaxDeliveryAttempts">3</attribute>
</mbean>