JMSの簡単なサンプルをJBOSSを使って作成した。(何故かサーブレット)
設定ファイル
JBoss4.3と5.1の設定ファイル配置場所
jboss-eap-4.3\jboss-as\server\XXX\deploy\jboss-messaging.sar
jboss-5.1.0.GA\server\default\deploy\messaging
上記に「適当な名前.xml」ファイルを配置
XXX.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Messaging Example Destinations
-->
<server>
<mbean code="org.jboss.jms.server.destination.TopicService"
name="jboss.messaging.destination:service=Topic,name=sampleTopic"
xmbean-dd="xmdesc/Topic-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
<attribute name="SecurityConfig">
<security>
<role name="guest" read="true" write="true"/>
<role name="publisher" read="true" write="true" create="false"/>
<role name="noacc" read="false" write="false" create="false"/>
</security>
</attribute>
</mbean>
</server>
受信側
package hoge;
import java.io.IOException;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Receiver
*/
public class Receiver extends HttpServlet
implements MessageListener{
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Receiver() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
InitialContext context = new InitialContext();
TopicConnectionFactory tcf =
(TopicConnectionFactory)context.lookup("ConnectionFactory");
TopicConnection con = tcf.createTopicConnection();
Topic sampleTopic = (Topic)context.lookup("topic/sampleTopic");
TopicSession session = con.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
con.start();
// 通常の購読予約
TopicSubscriber subscriber = session.createSubscriber(sampleTopic);
subscriber.setMessageListener(this);
} catch (Exception ex){
ex.printStackTrace();
}
}
@Override
public void onMessage(Message msg) {
TextMessage txtMessage = (TextMessage)msg;
try {
System.out.println("メッセージ受信:" + txtMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
送信側
package hoge;
import java.io.IOException;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Sender
*/
public class Sender extends HttpServlet{
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Sender() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
InitialContext context = new InitialContext();
TopicConnectionFactory tcf =
(TopicConnectionFactory)context.lookup("ConnectionFactory");
TopicConnection con = tcf.createTopicConnection();
Topic sampleTopic = (Topic)context.lookup("topic/sampleTopic");
TopicSession session = con.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
con.start();
// 通常のPublish
TopicPublisher publisher = session.createPublisher(sampleTopic);
TextMessage msg = session.createTextMessage();
msg.setText("publish!!!!!!!!!");
publisher.publish(msg);
} catch (Exception ex){
ex.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
[0回]