由于CSDN不能显示全部文章,要浏览全文请浏览以下连接
http://weisoft.myrice.com/Docs/JMSMDB.htm
内容简介:
1。连接MS SQL Server2000
2。Session Bean
3。Entity Bean
4。JMS+Message-Driven bean
5。JSP调用EJB(待续)
全部实战内容都经过严格测试,决无问题,只需严格按照文中步骤即可!
实战4:JMS
配置Weblogic
1. 启动WebLogic7
2. 打开IE6,在地址栏中输入:<http://localhost:7001/console>
3. 输入用户名和密码
4. 在左边的目录树中选中Services->JMS->Connection Factories,单击右侧的Configure a new JMS Connection Factory ,输入以下信息:
Configuration->General页:
Name = MDBDemo Connection Factory
JNDIName= MDBDemoCF
其它不变,单击Create建立Connection Factory。
Targets->Server页:
将myserver(服务器名称)移至右侧的列表中,但击单击Apply
5. 在左边的目录树中选中Services->JMS->Stores,单击右侧的Configure a new JMSFileStore,输入以下信息:
Configuration->General页:
Name = MDBDemo Store
Directory: = F:\bea\user_projects\mydomain\JMSStores (任意存在的目录即可)
单击Create建立JMSFileStore。
6. Services->JMS->Servers,单击右侧的Configure a new JMS Connection Factory ,输入以下信息:
Configuration->General页:
Name = MDBDemo JMSServer
Store = MDBDemo Store
其它不变,单击Create建立JMS Server。
Targets->Servers页:
Target = myserver(你的weblogic server的名字)
单击Configuration->General页中的Configure Destinations
Name = MDBDemo Topic
JNDIName= MDBDemo Topic
其它不变,单击Create建立Destination。
配置完毕。
建立Message Driven Bean:
1. 关闭所有工程:File->Close Projects
2. 选择File->New project
3. 在Name栏中输入MDBDemo,Directory栏中输入存放路径(不要有空格),其他不变,单击Finish。
4. 选择File->New->Enterprise->EJB Module单击OK。
5. 在弹出的对话框中,在Name中输入MDBMoudle, Version选择:EJB2.0 Compliant其余不变,单击OK关闭当前对话框。
6. 在右侧的EJB Designer 中单击鼠标右键选择:Create EJB->Message-Driven Bean,按如下填写:
Bean Name = MDBDemo
Transaction Type = Container
Destination Name = MDBDemo Topic
Destination Type = javax.jms.Topic
其它不变。
7.Project->Make ”MDBModule”, 编译成功后,右键单击左上角的MDBModule选择Deploy Options for ”MDBModule.jar”->Deploy,将其发布至Weblogic。
建立客户端:
以下是客户端源码,保存成TestClient.java加入工程后,选择Run->Run “TestClient.java” using defaults运行即可,可以在weblogic console窗口看到输出。如果看不到输出,重起weblogic试一试。
package mdbdemo;
import java.rmi.RemoteException;
import java.util.Properties;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
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.ejb.CreateException;
import javax.ejb.RemoveException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
/**
* This class illustrates calling a Message-Driven bean and publishing
* quotes on a topic.
*
* @author Copyright (c) 1998-2002 by BEA Systems, Inc. All Rights Reserved.
*/
public class TestClient {
static private String TOPIC_NAME = "MDBDemo Topic";
private String m_url;
private Context m_context;
private TopicConnection m_topicConnection;
public TestClient(String url)
throws NamingException
{
m_url = url;
try {
//
// Create a context
//
m_context = getInitialContext();
//
// Create the connection and start it
//
TopicConnectionFactory cf =
(TopicConnectionFactory) m_context.lookup("MDBDemoCF");
m_topicConnection = cf.createTopicConnection();
m_topicConnection.start();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
/**
* Runs this example from the command line. Example:
* <p>
* <tt>java examples.ejb20.message.Client "t3://localhost:7001"</tt>
* <p>
* The parameters are optional, but if any are supplied,
* they are interpreted in this order:
* <p>
* @param url URL such as "t3://localhost:7001" of Server
*/
public static void main(String[] args) throws Exception {
log("\nBeginning message.Client...\n");
String url = "t3://localhost:7001";
TestClient client = null;
try {
client = new TestClient(url);
} catch (NamingException ne) {
System.exit(1);
}
try {
client.example();
}
catch (Exception e) {
log("There was an exception while creating and using the MDB.");
log("This indicates that there was a problem communicating with the server: "+e);
//e.printStackTrace();
}
log("\nEnd message.Client...\n");
}
/**
* Runs this example.
*/
public void example()
throws RemoteException, JMSException, NamingException
{
Topic newTopic = null;
TopicSession session = null;
try {
session =
m_topicConnection.createTopicSession(false, // non transacted
Session.AUTO_ACKNOWLEDGE);
newTopic = (Topic) m_context.lookup(TOPIC_NAME);
}
catch(NamingException ex) {
newTopic = session.createTopic(TOPIC_NAME);
m_context.bind(TOPIC_NAME, newTopic);
}
TopicPublisher sender = session.createPublisher(newTopic);
TextMessage tm = session.createTextMessage();
String[] quotes = new String[] {
"BEAS 40 1/8", "SUNW 79 1/2", "IBM 82 1/4", "Hello !"
};
for (int i = 0; i < quotes.length; i++) {
tm.setText(quotes[i]);
sender.publish(tm);
}
}
/**
* Using a Properties object will work on JDK 1.1.x and Java2
* clients
*/
private Context getInitialContext() throws NamingException {
try {
// Get an InitialContext
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, m_url);
return new InitialContext(h);
}
catch (NamingException ex) {
log("We were unable to get a connection to the WebLogic server at "+m_url);
log("Please make sure that the server is running.");
throw ex;
}
}
/**
* This is the Java2 version to get an InitialContext.
* This version relies on the existence of a jndi.properties file in
* the application's classpath.
*
*/
// private static Context getInitialContext()
// throws NamingException
// {
// return new InitialContext();
// }
private static void log(String s) {
System.out.println(s);
}
}
实战5:JSP调用EJB
(待续)