`
wangpx
  • 浏览: 202393 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

配置 weblogic JMS 连接

    博客分类:
  • java
阅读更多

jms 的优点

  • 它可以把不影响用户执行结果又比较耗时的任务(比如发邮件通知管理员)异步 的扔给JMS 服务端去做,而尽快的把屏幕返还给用户。
  • 服务端能够多线程排队响应高并发的请求,并保证请求不丢失。
  • 可以在Java世界里达到最高的解耦。客户端与服务端无需直连,甚至无需知晓对方是谁、在哪里、有多少人,只要对流过的信息作响应就行了,在企业应用环境复杂时作用明显。



今天使用jms 来连接weblogic ,但是总是报weblogic.jndi.WLInitialContextFactory 找不到。

后来试了很多种办法,网上提到加 weblogic.jar 。我按网上说的加了 weblogic.jar。但是还是报java 类找不到 weblogic.security.subject.AbstractSubject java.lang.NoClassDefFoundError:Weblogic/security/subject/AbstractSubject 之类的异常。
那么怎么办呢,其实很简单 只要进入到你的 weblogic-home 路径下进入到server/lib 目录,并运行 jdk6命令 "java -jar wljarbuilder.jar" jdk5 命令“java -jar wljarbuilder.jar -profile wlfullclient5” .拷贝"wlfullclient.jar " 或者 "wlfullclient5.jar" 到你的classpath 环境下。 下面是一个连接weblogic的例子。

 

 

package jms;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;

import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.MapMessage;
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.jms.Session;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class QueueSend {

	// Defines the JNDI context factory.
	public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

	// Defines the JNDI provider url.
	public final static String PROVIDER_URL = "t3://localhost:7001";

	// Defines the JMS connection factory for the queue.
	public final static String JMS_FACTORY = "myjmsconnectionfactory";

	// Defines the queue 用的是对应 QUEUE的JNDI名子
	public final static String QUEUE = "myjmsqueue";

	private QueueConnectionFactory qconFactory;

	private QueueConnection qcon;

	private QueueSession qsession;

	private QueueSender qsender;

	private Queue queue;

	private TextMessage msg;

	private StreamMessage sm;

	private BytesMessage bm;

	private MapMessage mm;

	private ObjectMessage om;

	/**
	 * Creates all the necessary objects for sending messages to a JMS queue.
	 * 
	 * @param ctx
	 *            JNDI initial context
	 * @param queueName
	 *            name of queue
	 * @exception NamingException
	 *                if operation cannot be performed
	 * @exception JMSException
	 *                if JMS fails to initialize due to internal error
	 */
	public void init(Context ctx, String queueName) throws NamingException, JMSException {
		qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
		qcon = qconFactory.createQueueConnection();
		qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
		queue = (Queue) ctx.lookup(queueName);
		qsender = qsession.createSender(queue);

		msg = qsession.createTextMessage();
		sm = qsession.createStreamMessage();
		bm = qsession.createBytesMessage();
		mm = qsession.createMapMessage();
		om = qsession.createObjectMessage();

		qcon.start();
	}

	/**
	 * Sends a message to a JMS queue.
	 * 
	 * @param message
	 *            message to be sent
	 * @exception JMSException
	 *                if JMS fails to send message due to internal error
	 */
	public void send(String message) throws JMSException {
		// set TextMessage
		msg.setText(message);

		// set StreamMessage
		sm.writeString("xmddl369");
		sm.writeDouble(23.33);

		// set BytesMessage
		String name = "xmddl369";
		byte[] block = name.getBytes();
		bm.writeBytes(block);

		// set MapMessage
		mm.setString("name", "xmddl369");

		// set ObjectMessage
		UserInfo ui = new UserInfo();
		ui.setName("xmddl369");
		ui.setAddress("厦门");
		ui.setAge(100);
		om.setObject(ui);

		qsender.send(msg);
		qsender.send(sm);
		qsender.send(bm);
		qsender.send(mm);
		qsender.send(om);
	}

	/**
	 * Closes JMS objects.
	 * 
	 * @exception JMSException
	 *                if JMS fails to close objects due to internal error
	 */
	public void close() throws JMSException {
		qsender.close();
		qsession.close();
		qcon.close();
	}

	public static void main(String[] args) throws Exception {
		InitialContext ic = getInitialContext();
		QueueSend qs = new QueueSend();
		qs.init(ic, QUEUE);
		//readAndSend(qs);
		qs.send("ddd");
		qs.close();
	}

	private static void readAndSend(QueueSend qs) throws IOException, JMSException {
		BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in));
		String line = null;
		boolean quitNow = false;
		do {
			System.out.print("Enter message (\"quit\" to quit): ");
			line = msgStream.readLine();
			if (line != null && line.trim().length() != 0) {
				qs.send(line);
				System.out.println("JMS Message Sent: " + line + "\n");
				quitNow = line.equalsIgnoreCase("quit");
			}
		} while (!quitNow);

	}

	private static InitialContext getInitialContext() throws NamingException {
		Hashtable env = new Hashtable();
		env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
		env.put(Context.PROVIDER_URL, PROVIDER_URL);
		return new InitialContext(env);
	}
}
 
package jms;

import java.util.Hashtable;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 * 
 * @author Administrator
 * 
 *         <pre>
 *      修改版本:  修改人:  修改日期:  修改内容:
 * </pre>
 */
public class QueueReceive implements MessageListener {
	// Defines the JNDI context factory.
	public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

	// Defines the JNDI provider url.
	public final static String PROVIDER_URL = "t3://localhost:7001";

	// Defines the JMS connection factory for the queue.
	public final static String JMS_FACTORY = "myjmsconnectionfactory";

	// Defines the queue 用的是对应 QUEUE的JNDI名子
	public final static String QUEUE = "myjmsqueue";

	private QueueConnectionFactory qconFactory;

	private QueueConnection qcon;

	private QueueSession qsession;

	private QueueReceiver qreceiver;

	private Queue queue;

	private boolean quit = false;

	/**
	 * Message listener interface.
	 * 
	 * @param msg
	 *            message
	 */
	public void onMessage(Message msg) {
		try {
			String msgText = "";
			double d = 0;

			if (msg instanceof TextMessage) {
				msgText = ((TextMessage) msg).getText();
			} else if (msg instanceof StreamMessage) {
				msgText = ((StreamMessage) msg).readString();
				d = ((StreamMessage) msg).readDouble();
			} else if (msg instanceof BytesMessage) {
				byte[] block = new byte[1024];
				((BytesMessage) msg).readBytes(block);
				msgText = String.valueOf(block);
			} else if (msg instanceof MapMessage) {
				msgText = ((MapMessage) msg).getString("name");
			} else if (msg instanceof ObjectMessage) {
				UserInfo ui = (UserInfo) ((ObjectMessage) msg).getObject();
				msgText = ui.getName();
				d = ui.getAge();
			}

			System.out.println("Message Received: " + msgText + "\t" + d);

			if (msgText.equalsIgnoreCase("quit")) {
				synchronized (this) {
					quit = true;
					this.notifyAll(); // Notify main thread to quit
				}
			}
		} catch (JMSException jmse) {
			jmse.printStackTrace();
		}
	}

	/**
	 * Creates all the necessary objects for receiving messages from a JMS
	 * queue.
	 * 
	 * @param ctx
	 *            JNDI initial context
	 * @param queueName
	 *            name of queue
	 * @exception NamingException
	 *                if operation cannot be performed
	 * @exception JMSException
	 *                if JMS fails to initialize due to internal error
	 */
	public void init(Context ctx, String queueName) throws NamingException, JMSException {
		qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
		qcon = qconFactory.createQueueConnection();
		qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
		queue = (Queue) ctx.lookup(queueName);
		qreceiver = qsession.createReceiver(queue);
		qreceiver.setMessageListener(this);
		qcon.start();
	}

	/**
	 * Closes JMS objects.
	 * 
	 * @exception JMSException
	 *                if JMS fails to close objects due to internal error
	 */
	public void close() throws JMSException {
		qreceiver.close();
		qsession.close();
		qcon.close();
	}

	/**
	 * main() method.
	 * 
	 * @param args
	 *            WebLogic Server URL
	 * @exception Exception
	 *                if execution fails
	 */

	public static void main(String[] args) throws Exception {

		InitialContext ic = getInitialContext();
		QueueReceive qr = new QueueReceive();
		qr.init(ic, QUEUE);

		System.out.println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");

		// Wait until a "quit" message has been received.
		synchronized (qr) {
			while (!qr.quit) {
				try {
					qr.wait();
				} catch (InterruptedException ie) {
					ie.printStackTrace();
				}
			}
		}
		qr.close();
	}

	private static InitialContext getInitialContext() throws NamingException {
		Hashtable env = new Hashtable();
		env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
		env.put(Context.PROVIDER_URL, PROVIDER_URL);
		return new InitialContext(env);
	}

	public String getEncoding() throws Exception {
		return "Hello World!";
	}
}
 
package jms;

import java.io.Serializable;

public class UserInfo implements Serializable {
	/**
  *
  */
	private static final long serialVersionUID = 1L;
	private String name;
	private String address;
	private double age;

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public double getAge() {
		return age;
	}

	public void setAge(double age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}




 

spring 中的jndi配置

<!-- JNDI 配置


 --> 
   <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
      <property name="environment"> 
       <props> 
        <prop key="java.naming.factory.initial"> 
         weblogic.jndi.WLInitialContextFactory 
        </prop> 
        <prop key="java.naming.provider.url"> 
         t3://localhost:7001
        </prop> 
        <prop key="java.naming.factory.url.pkgs"> 
          weblogic.jndi.factories 
        </prop> 
       </props> 
         </property> 
     </bean> 

 <!-- jms 连接工厂 ConnectionFactory

 是在第11页图片里面要填写的jndi的名称

-->  
    <bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
          <property name="jndiName" value="ConnectionFactory

" />
          <property name="jndiTemplate" ref="jndiTemplate"/>  
     </bean>  

<!-- jms 队列 Queue 是在第11页图片里面要填写的jndi的名称 -->  

<bean id="jmsDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiName" value="Queue " />
       <property name="jndiTemplate" ref="jndiTemplate"/>
      </bean>

<!-- jms模板 -->

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
          <property name="connectionFactory" ref="jmsConnectionFactory" />
          <property name="defaultDestination" ref="jmsDestination" />
   </bean>


 

 



  


  
分享到:
评论

相关推荐

    Spring+Weblogic JMS

    1. **配置JMS连接工厂**:在Spring的配置文件中,我们需要定义一个JMS连接工厂bean,通常使用`weblogic.jndi.WLInitialContextFactory`作为初始上下文工厂类,并设置JNDI名称、服务器URL、用户名和密码等相关属性。...

    Weblogic JMS 依赖jar包下载

    要创建和配置Weblogic JMS服务,你需要了解以下关键步骤: 1. **配置JMS模块**:在Weblogic管理控制台中,需要创建一个新的JMS模块,定义所需的队列和主题。 2. **创建JMS服务器**:这是运行JMS服务的地方,每个JMS...

    weblogic_jms服务器配置

    本篇文章将详细介绍如何配置 WebLogic JMS 服务器,包括持久性存储、创建 JMS 服务器、配置 JMS 模块以及代码实现发送和接收主题。 **1. 配置持久性存储** 持久性存储对于 JMS 消息非常重要,因为它确保即使在...

    weblogic中使用JMS发送和接受消息

    2. **创建连接和会话**:使用连接工厂创建JMS连接,然后从连接创建会话。会话是执行JMS操作的工作单元。 3. **创建和发送消息**: - 对于队列,使用QueueSession创建QueueSender和QueueRecipient。 - 对于主题,...

    Weblogic_JMS+配置数据源配置

    配置WebLogic的数据源是为应用程序提供数据库连接的关键步骤。现在,我们详细探讨WebLogic_JMS和配置数据源的相关知识点。 1. **WebLogic JMS服务**: - **概念**:WebLogic JMS服务允许应用程序创建、发送、接收...

    Programming WebLogic JMS

    - **获取连接**:使用JNDI查找并获取连接工厂对象,然后通过该工厂创建一个JMS连接。 - **创建会话**:从连接中创建一个会话对象。 - **创建生产者**:从会话中创建一个消息生产者。 - **发送消息**:使用生产者发送...

    Linux环境Weblogic集群配置,Weblogic JMS集群配置

    本教程将深入探讨如何在Linux环境下配置Weblogic集群以及Weblogic JMS集群,这对于提高应用程序的可用性和可扩展性至关重要。 首先,让我们了解一下Weblogic集群的基本概念。Weblogic集群是指一组独立的Weblogic...

    Weblogic环境下JMS配置

    4. 配置JMS连接工厂和目的地:连接工厂提供了与JMS提供者建立连接的配置信息,而目的地是消息的实际目标,可以是队列或主题。 5. 部署JMS资源:将创建的JMS资源部署到WebLogic域中,以便应用程序能够使用它们。 6....

    springboot集成weblogic的jms源码.zip

    1. **配置JMS连接**: 在Spring Boot的配置中设置JNDI查找连接工厂的参数,包括WebLogic服务器的URL、用户名和密码。 2. **定义消息目标**: 指定消息将被发送到的队列或主题的JNDI名称。 3. **创建消息监听器**: 实现...

    webLogic9.2配置JMS步骤

    WebLogic 9.2配置JMS(Java Message Service)涉及一系列步骤,主要目的是为了实现分布式消息传递,包括点对点的Queue模式和发布/订阅的Topic模式。在本例中,我们将专注于配置发布/订阅模式,即Topic。以下是详细的...

    在Weblogic上配置JMS服务的方法

    在WebLogic服务器上配置Java消息服务(JMS)是实现分布式消息传递的关键步骤,它允许应用程序在异步模式下交换数据。以下是详细配置JMS服务的步骤,涵盖了连接工厂、消息存储、JMS服务器以及消息目的地的配置。 1. ...

    Weblogic创建JMS服务器

    在WebLogic中配置JMS服务器是实现异步通信和解耦系统组件的关键步骤。 首先,我们要理解JMS服务器在WebLogic中的作用。JMS服务器负责管理消息生产者和消费者之间的交互,通过消息队列或主题来存储和传递消息。创建...

    JMS入门小例子以及weblogic安装,并且在weblogic中配置JMS服务

    5. **配置应用程序**:在应用中引入JMS相关的依赖库,如JMS API、Spring框架的JMS支持和其他必要的库(如WebLogic客户端库)。 6. **编写接收端和发送端代码**:接收端通过监听器等待消息,发送端则负责创建消息并...

    JMS 简介以及Weblogic配置JMS图解

    【正文】 Java Messaging Service(JMS)是一种标准的API,用于在Java应用程序之间交换消息,特别是在分布式...在WebLogic这样的应用服务器中配置JMS,可以帮助开发者充分利用这些特性,构建高效、健壮的企业级应用。

    weblogic中配置JMS及其测试程序

    总结,配置WebLogic中的JMS涉及创建JMS模块、定义目的地、配置服务器和连接工厂,编写生产者和消费者程序,部署并测试。在实际环境中,还需要关注监控、故障排查以及实现高可用性和扩展性。复件 weblogic中配置JMS...

    Weblogic上部署JMS

    WebLogic Server 是一款由 Oracle 公司提供的企业级 Java 应用服务器,它支持Java Message Service (JMS),这是一个标准接口,允许应用程序在分布式环境中发送和接收消息。JMS 提供了可靠的消息传递机制,是企业级...

    WebLogic 11g JMS图文配置 和 详细的示例代码

    首先,配置WebLogic 11g中的JMS服务主要包括以下几个步骤: 1. **创建JMS模块**:在WebLogic管理控制台中,你需要创建一个新的JMS模块,它是一个容器,可以包含多个JMS资源,如队列(Queue)和主题(Topic)。 2. ...

    weblogic图文配置JMS

    配置WebLogic JMS主要包括以下几个步骤: 1. **创建JMS模块**:在WebLogic管理控制台中,选择“服务” -&gt; “JMS” -&gt; “JMS模块”,点击“新建”按钮,输入模块名称,例如“JMSModule”。 2. **定义JMSServer**:...

    Spring整合Weblogic jms实例详解

    配置过程包括配置持久性存储、创建 JMS 模块、配置连接工厂、队列、远程 SAF 上下文、SAF 导入目的地、SAF 错误处理等步骤。 在 Spring 环境下,需要配置 applicationContext-jms.xml 文件,以便在应用程序中使用 ...

Global site tag (gtag.js) - Google Analytics