- 浏览: 202393 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
yixinhu:
你好 能加下你的QQ么 我怎么打出来的exe点击都没反应啊.. ...
java 生成exe 文件 -
chenxiang105:
如果不需要flash 只需要做图片的翻页效果 这个是否也合适类 ...
jQuery插件page peel AD实现动态卷页、翻页或卷角flash广告效果 -
tuoxie007:
幸苦,好文章!
jetspeed门户项目组介绍 -
bobo:
需要考虑不同浏览器的兼容性
通过网页访问本地资源程序 -
tag13346:
说得这么玄,看下
时空趋势理论 --- 超越时空的均线技术(转载 )
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>
发表评论
-
应用服务器设为服务的方法
2011-01-05 11:03 9621.将Tomcat 5以上版本设置成服务 (假设我们缺省的T ... -
java 生成exe 文件
2010-03-15 11:25 6899对于作Java桌面应 ... -
linux 下jdk ,jboss的安装和jboss的自启动
2009-09-15 13:09 2538A。 linux下 JDK的安装 ... -
如何用java远程访问Domino邮箱数据2
2009-08-14 16:54 1570遍历邮箱数据库的所有 Document : ... -
Java访问Domino(Java,Domino,diiop,远程访问)
2009-08-14 16:17 11828一、概述 Java 对 Domino Obje ... -
如何用java远程访问Domino邮箱数据1
2009-08-14 16:16 3110应用场景 我们需 ... -
模板:velocity和freemarker的比较[转
2009-08-10 11:02 1320关键字: 模板技术 /** *作者:张荣华 ... -
实战Concurrent
2009-04-23 12:41 857DigitalSonic 写道 编写 ... -
httpclient 模拟登陆网站 获取网站内容程序
2009-03-22 08:24 3299package org.apache.http.example ... -
JAVA-用HttpClient来模拟浏览器GET,POST2
2009-03-20 00:23 29235. 提交XML格式参数提交XML格式的参数很简单,仅仅是一 ... -
JAVA-用HttpClient来模拟浏览器GET,POST1
2009-03-20 00:21 1185一般的情况下我们都是使用IE或者Navigator浏览器来访问 ...
相关推荐
1. **配置JMS连接工厂**:在Spring的配置文件中,我们需要定义一个JMS连接工厂bean,通常使用`weblogic.jndi.WLInitialContextFactory`作为初始上下文工厂类,并设置JNDI名称、服务器URL、用户名和密码等相关属性。...
要创建和配置Weblogic JMS服务,你需要了解以下关键步骤: 1. **配置JMS模块**:在Weblogic管理控制台中,需要创建一个新的JMS模块,定义所需的队列和主题。 2. **创建JMS服务器**:这是运行JMS服务的地方,每个JMS...
本篇文章将详细介绍如何配置 WebLogic JMS 服务器,包括持久性存储、创建 JMS 服务器、配置 JMS 模块以及代码实现发送和接收主题。 **1. 配置持久性存储** 持久性存储对于 JMS 消息非常重要,因为它确保即使在...
2. **创建连接和会话**:使用连接工厂创建JMS连接,然后从连接创建会话。会话是执行JMS操作的工作单元。 3. **创建和发送消息**: - 对于队列,使用QueueSession创建QueueSender和QueueRecipient。 - 对于主题,...
配置WebLogic的数据源是为应用程序提供数据库连接的关键步骤。现在,我们详细探讨WebLogic_JMS和配置数据源的相关知识点。 1. **WebLogic JMS服务**: - **概念**:WebLogic JMS服务允许应用程序创建、发送、接收...
- **获取连接**:使用JNDI查找并获取连接工厂对象,然后通过该工厂创建一个JMS连接。 - **创建会话**:从连接中创建一个会话对象。 - **创建生产者**:从会话中创建一个消息生产者。 - **发送消息**:使用生产者发送...
本教程将深入探讨如何在Linux环境下配置Weblogic集群以及Weblogic JMS集群,这对于提高应用程序的可用性和可扩展性至关重要。 首先,让我们了解一下Weblogic集群的基本概念。Weblogic集群是指一组独立的Weblogic...
4. 配置JMS连接工厂和目的地:连接工厂提供了与JMS提供者建立连接的配置信息,而目的地是消息的实际目标,可以是队列或主题。 5. 部署JMS资源:将创建的JMS资源部署到WebLogic域中,以便应用程序能够使用它们。 6....
1. **配置JMS连接**: 在Spring Boot的配置中设置JNDI查找连接工厂的参数,包括WebLogic服务器的URL、用户名和密码。 2. **定义消息目标**: 指定消息将被发送到的队列或主题的JNDI名称。 3. **创建消息监听器**: 实现...
WebLogic 9.2配置JMS(Java Message Service)涉及一系列步骤,主要目的是为了实现分布式消息传递,包括点对点的Queue模式和发布/订阅的Topic模式。在本例中,我们将专注于配置发布/订阅模式,即Topic。以下是详细的...
在WebLogic服务器上配置Java消息服务(JMS)是实现分布式消息传递的关键步骤,它允许应用程序在异步模式下交换数据。以下是详细配置JMS服务的步骤,涵盖了连接工厂、消息存储、JMS服务器以及消息目的地的配置。 1. ...
在WebLogic中配置JMS服务器是实现异步通信和解耦系统组件的关键步骤。 首先,我们要理解JMS服务器在WebLogic中的作用。JMS服务器负责管理消息生产者和消费者之间的交互,通过消息队列或主题来存储和传递消息。创建...
5. **配置应用程序**:在应用中引入JMS相关的依赖库,如JMS API、Spring框架的JMS支持和其他必要的库(如WebLogic客户端库)。 6. **编写接收端和发送端代码**:接收端通过监听器等待消息,发送端则负责创建消息并...
【正文】 Java Messaging Service(JMS)是一种标准的API,用于在Java应用程序之间交换消息,特别是在分布式...在WebLogic这样的应用服务器中配置JMS,可以帮助开发者充分利用这些特性,构建高效、健壮的企业级应用。
总结,配置WebLogic中的JMS涉及创建JMS模块、定义目的地、配置服务器和连接工厂,编写生产者和消费者程序,部署并测试。在实际环境中,还需要关注监控、故障排查以及实现高可用性和扩展性。复件 weblogic中配置JMS...
WebLogic Server 是一款由 Oracle 公司提供的企业级 Java 应用服务器,它支持Java Message Service (JMS),这是一个标准接口,允许应用程序在分布式环境中发送和接收消息。JMS 提供了可靠的消息传递机制,是企业级...
首先,配置WebLogic 11g中的JMS服务主要包括以下几个步骤: 1. **创建JMS模块**:在WebLogic管理控制台中,你需要创建一个新的JMS模块,它是一个容器,可以包含多个JMS资源,如队列(Queue)和主题(Topic)。 2. ...
配置WebLogic JMS主要包括以下几个步骤: 1. **创建JMS模块**:在WebLogic管理控制台中,选择“服务” -> “JMS” -> “JMS模块”,点击“新建”按钮,输入模块名称,例如“JMSModule”。 2. **定义JMSServer**:...
配置过程包括配置持久性存储、创建 JMS 模块、配置连接工厂、队列、远程 SAF 上下文、SAF 导入目的地、SAF 错误处理等步骤。 在 Spring 环境下,需要配置 applicationContext-jms.xml 文件,以便在应用程序中使用 ...