weblogic的JMS的配置_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
4
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 7261 | 回复: 3   主题: weblogic的JMS的配置        下一篇 
    本主题由 koei 于 2011-12-23 13:22:58 移动
张伟
注册用户
等级:列兵
经验:110
发帖:81
精华:0
注册:2011-12-22
状态:离线
发送短消息息给张伟 加好友    发送短消息息给张伟 发消息
发表于: IP:您无权察看 2011-12-22 11:38:12 | [全部帖] [楼主帖] 楼主

<P></P><P>weblogic软件介绍 weblogic 是bea公司出品的一个application sever 确切的说事一个基于JavaEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。 基本介绍 [font=楷体][size=3]webserver是用来构建网站的必要软件用来解析发布网页等功能,它是用纯java开发的。weblogic本来不是由bea发明的,是它从别人手中买过来,然后再加工扩展。目前weblogic在世界application server市场上占有最大的份额,其他还有象金蝶Apusic应用服务器、IBM的websphere,免费的tomcat、resin等中间件。 BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能 、可扩展性和高可用性。   与BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可为部署适应性个性化电子商务应用系统提供完善的解决方案。  特色优势   BEA WebLogic Server具有开发和部署关键任务电子商务Web应用系统 所需的多种特色和优势,包括: 1)领先的标准   对业内多种标准的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web应用系统的实施更为简单,并且保护了投资,同时也使基于标准的解决方案的开发更加简便。 2)无限的可扩展性   BEA WebLogic Server以其高扩展的架构体系闻名于业内,包括客户机连接的共享、资源pooling以及动态网页和EJB组件群集。 3)快速开发   凭借对EJB和JSP的支持,以及BEA WebLogic Server 的Servlet组件架 构体系,可加速投放市场速度。这些开放性标准与WebGain Studio配合时,可简化开发,并可发挥已有的技能,迅速部署应用系统。 4)部署更趋灵活   BEA WebLogic Server的特点是与领先数据库、操作系统和Web服务器 紧密集成。 5)关键任务可靠性   其容错、系统管理和安全性能已经在全球数以千记的关键任务环境中得以验证。 6)体系结构   BEA WebLogic Server是专门为企业电子商务应用系统开发的。企业电子商务应用系统需要快速开发,并要求服务器端组件具有良好的灵活性和安全性,同时还要支持关键任务所必需的扩展、性能、和高可用性。BEA WebLogic Server简化了可移植及可扩展的应用系统的开发,并为其它应用 系统和系统提供了丰富的互操作性。   凭借其出色的群集技术,BEA WebLogic Server拥有最高水平的可扩展 性和可用性。BEA WebLogic Server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错,如Web购物车;组件群集则处理复杂的复制、负载平衡和EJB组件容错,以及状态对象(如EJB实体)的恢复。   无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它Web应用系统所不具备的。 JMS介绍 JMS即Java Message Service(Java消息服务),是一组Java应用程序接口(Java API),它提供创建、发送、接收、读取消息的服务。是有Sun公司和它的合作伙伴设计的JMS API定义了一组公共的应用程序接口和相应语法,使得Java程序能够和其他消息组件进行通信。 JMS是一种与厂商无关的API,用来访问消息收发系统。现在许多厂商目前都支持JMS,就有我现在用到的weblogic。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JML 客户机发送消息。 消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本 (TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。 消息收发系统是异步的,也就是说,JMS 客户机可以发送消息而不必等待回应。在 JMS 中,客户机将消息发送给一个虚拟通道(主题或队列),而其它 JMS 客户机则预订或监听这个虚拟通道。当 JMS 客户机发送消息时,它并不等待回应。它执行发送操作,然后继续执行下一条指令。消息可能最终转发到一个或许多个客户机,这些客户机都不需要作出回应。 JMS的通用接口集合以异步方式发送或接收消息。异步方式接收消息显然是使用间断网络连接的客户机,诸如移动电话和PDA的最好的选择。另外, JMS采用一种宽松结合方式整合企业系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、可移植的企业级应用程序,而把开发人力解放出来。 Java消息服务支持两种消息模型:Point-to-Point消息(P2P)发布订阅消息(Publish Subscribe messaging,简称Pub/Sub)。JMS规范并不要求供应商同时支持这两种消息模型,但应该熟悉这两种消息模型的优势与缺点。 P2P消息模型是在点对点之间传递消息时使用。如果应用程序开发者希望每一条消息都能够被处理,那么应该使用P2P消息模型。与Pub/Sub消息模型不同,P2P消息总是能够被传送到指定的位置。 Pub/Sub模型在一到多的消息广播时使用。如果一定程度的消息传递的不可靠性可以被接受的话,那么应用程序开发者也可以使用Pub/Sub消息模型。换句话说,它适用于所有的消息消费程序并不要求能够收到所有的信息或者消息消费程序并不想接收到任何消息的情况。 JMS通过允许创建持久订阅来简化时间相关性,即使消息预订者未激活也可以接收到消息。此外,使用持久订阅还可通过队列提供灵活性和可靠性,而仍然允许消息被发给许多的接收者。 如果session被标记为transactional的话,确认消息就通过确认和校正来自动地处理。 如果session没有标记为 transactional,你有三个用于消息确认的选项。 · AUTO_ACKNOWLEDGE session将自动地确认收到一则消息。 · CLIENT_ACKNOWLEDGE 客户端程序将确认收到一则消息,调用这则消息的确认方法。     · DUPS_OK_ACKNOWLEDGE 这个选项命令session“懒散的”确认消息传递,可以想到,这将导致消息提供者传递的一些复制消息可能会出错。这种确认的方式只应当用于消息消费程序可以容忍潜在的副本消息存在的情况。 queueSession = queueConnection.createQueueSession(false, session.AUTO_ACKNOWLEDGE);//P2P topicSession = topicConnection.createTopicSession(false, session.AUTO_ACKNOWLEDGE); //Pub-Sub 传递消息的方式 JMS现在有两种传递消息的方式。 标记为NON_PERSISTENT的消息最多投递一次,而标记为PERSISTENT的消息将使用暂存后再转送的机理投递。如果一个JMS服务离线,那么持久性消息不会丢失但是得等到这个服务恢复联机时才会被传递。所以默认的消息传递方式是非持久性的。即使使用非持久性消息可能降低内务和需要的存储器,并且这种传递方式只有当你不需要接收所有的消息时才使用。 JMS规范并不需要JMS供应商实现消息的优先级路线,但是它需要递送加快的消息优先于普通级别的消息。JMS定义了从0到9的优先级路线级别,0是最低的优先级而9则是最高的。更特殊的是0到4是正常优先级的变化幅度,而5到9是加快的优先级的变化幅度。 JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。 · StreamMessage -- Java原始值的数据流 · MapMessage--一套名称-值对 · TextMessage--一个字符串对象 · ObjectMessage--一个序列化的 Java对象 · BytesMessage--一个未解释字节的数据流 [h2][size4]JMS接口的描述[/size=4][/h2] JMS 支持两种消息类型PTP 和Pub/Sub,分别称作:PTP Domain 和Pub/Sub Domain,这两种接口都继承统一的JMS Parent 接口,JMS 主要接口如下所示: JMS Common InterFace ConnectionFactory Connection Destination Session MessageProducer MessageCOnsumer PTP-specific InterFace QueueConnectionFactory QueueConnetion Queue QueueSession QueueSender QueueReceiver/QueueBrowser Pub/Sub-specific InterFace TopicConnectionFactory TopicConnection Topic TopicSession TopicPublisher TopicSubscriber 对这些接口的简单描述: ConnectionFactory :连接工厂,JMS 用它创建连接 Connection :JMS 客户端到JMS Provider 的连接 Destination :消息的目的地 Session: 一个发送或接收消息的线程 MessageProducer: 由Session 对象创建的用来发送消息的对象 MessageConsumer: 由Session 对象创建的用来接收消息的对象 [h2][size=4]JMS消息模型[/size=4][/h2] JMS消息由以下几部分组成:消息头,属性,消息体。 消息头(Header) - 消息头包含消息的识别信息和路由信息,消息头包含一些标准的属性。 属性(Properties) - 除了消息头中定义好的标准属性外,JMS 提供一种机制增加新属性到消息头中。 消息体(Body) - JMS API 定义了5种消息体格式,也叫消息类型,你可以使用不同形式发送接收数据并可以兼容现有的消息格式。
该贴由koei转至本版2011-12-23 13:22:58
</P><P></P>



赞(0)    操作        顶端 
张伟
注册用户
等级:列兵
经验:110
发帖:81
精华:0
注册:2011-12-22
状态:离线
发送短消息息给张伟 加好友    发送短消息息给张伟 发消息
发表于: IP:您无权察看 2011-12-22 12:39:43 | [全部帖] [楼主帖] 2  楼

<P></P><P>点击开新窗口欣赏
 安装过程 本次安装是在windows环境下安装,整个过程比较简单,大部分只需要按照默认的设置即可,大致步骤如下: 运行wls1035_oepe111172_win32.exe,启动WebLogic 10.3.5.0的安装过程。 选择Weblogic安装目录 安装在非系统盘E:,且目录名不包含汉字与空格。 选择Custom类型 选择要安装的组件类型,安装组件。 选择要安装的JDK,两者均安装。 选择产品安装目录,保持默认。 安装节点管理服务要安装节点管理服务。 选择快捷菜单模式 安装总结 安装过程 安装结束,取消执行Run Quickstart。 启动配置 点击开始菜单,在所有程序选择图01所示的文件,出现图02的程序。 选择新建weblogic域,然后点击下一步,出现图03的程序。 选择默认产品(Basic Weblogic Server Domain),点击下一步,出现图04的程序 这里进行对域名和位置的配置,这里我是保持默认,点击下一步,出现图05的程序 这里是对管理员名称和密码配置,密码最少8位,这里我配置为名称是weblogic,用户口令是weblogic1,点击下一步,出现图06的程序 这里选择域启动模式和JDK的版本选择,这里我选择域启动模式是开发模式,JDK选择是Sun的,点击下一步,出现图07的程序 这里一些配置,这里我选择了一个管理服务器,其它未选,点击下一步,出现图08的程序 这里是对管理服务器的配置,我配置的为名称是AdminSever,监听地址是All local Addresses,端口是7001,为启用SSL。点击下一步,出现图09的程序 这里是可以查看刚刚以上步骤都域的配置,然后点击创建,然后等待完成。</P><P></P>


赞(0)    操作        顶端 
张伟
注册用户
等级:列兵
经验:110
发帖:81
精华:0
注册:2011-12-22
状态:离线
发送短消息息给张伟 加好友    发送短消息息给张伟 发消息
发表于: IP:您无权察看 2011-12-22 13:54:29 | [全部帖] [楼主帖] 3  楼

<P></P><P>点击开新窗口欣赏
  启动配置weblogic 选择startWeblogic.cmd,在浏览器输入http://localhost:7001/console。然后输入管理员账号和密码,就进入控制台。出现如图所示画面。 1.点击域机构里环境,再点击计算机,建一台虚机计算机名称就叫Machine,操作系统选择Unix,点击下步,节点管理属性保持默认,点击完成。 2.点击域机构里服务器,新建俩台服务器ServerA和ServerB,监听地址是localhost,端口分别设置为7002和7003,选择不属于某个集群。 3.启动节点管理器,是图01中Node Manager。启动ServerA和ServerB。 4.点击域结构里服务,再点击消息传送,再点击JMS服务器。然后新建JMSSeverA和JMSSeverB。名称分别是JMSSeverA和JMSSeverB;持久性储存选择新建存储,类型都为文件储存,名称分别是FileStoreA和FileStoreB, 目标选择的向对应的ServerA和SeverB;然后下一步,同样选择相对应的ServerA和SeverB。 5.点击JMS模块,建立SystemModuleA和SystemModuleB。定位到相对的ServerA和SeverB。 6.点击SystemModuleA。然后新建选择连接工厂:名称为ConnectionFactory-A;一定要配置JNDI名称名称为ConnectionFactoryA;一下保持默认,然后完成。再新建队列:名称Queue-A;然后配置JNDI名称为QueueA;然后新建子部署Queue-A ;定位于JMSServer-A。以同样的方法为SystemModuleB,配置连接工厂ConnectionFactory-B和队列Queue-B。 7.为SystemModule-A里建立SAF远程上下文,SAF错误处理程序,SAF导入目的地。SAF远程上下文:名称为RemoteSAFContext-A;url这里填要转发到位置的T3协议地址端口;再填写用户名和口令。SAF错误处理:名称为ErrorHandling-A;处理策略有4种,这里选择默认的放弃;日志格式当上面策略选择日志时,这里要填写格式;错误目的地当上面策略选择为重定向时,这里要选择(要自己建),默认为None。最后新建SAAF导入目的地属性:名称为SAFImporteDestinations-A;JNDI前缀这里一定要填写,使用SAF转发时要用,名称我填写为SAFDestinations,远程上下文选择刚刚建立的RemoteSAFContext-A;SAF错误处理选择刚刚建立的ErrorHandling-A;以下保持默认,下一步然后完成。 8.点击上步建立好的SAFImporteDestinations-A,进入SAFImporteDestinations-A的设置页面,点击队列,然后新建SAF队列:名称就为SAFQueue;远程JNDI名称填写你要转发到那个服务器上的队列的JNDI名称,这里我填写为上方建立的QueueB。 9.点击域结构列表里的储存转发代理,新建储存转发代理:名称为SAFAgent;持久性储存选择默认none;代理类型有3种,这里我选择的是只发送。 以上就是在weblogic中的配置。</P><P></P>


赞(0)    操作        顶端 
张伟
注册用户
等级:列兵
经验:110
发帖:81
精华:0
注册:2011-12-22
状态:离线
发送短消息息给张伟 加好友    发送短消息息给张伟 发消息
发表于: IP:您无权察看 2011-12-22 14:26:27 | [全部帖] [楼主帖] 4  楼

打开eclipse,新建工程qwe,然后建立包mqe,然后建立MessageSAFQueueSend类文件,输入以下代码

package mqe;

import java.util.*;

import javax.naming.*;

import javax.jms.*;

import javax.jms.Queue;

public class MessageSAFQueueSend {

    public final static String queueConnectionFactoryName = "ConnectionFactoryA";

    public final static String queueName ="SAFDestinationsQueueB";

    private QueueConnectionFactory queueConnectionFactory;

    private QueueConnection queueConnection;

    private QueueSession queueSession;

    private QueueSender queueSender;

    private Queue queue;

    private TextMessage textMessage;

    /**

    * @param args

    * @throws JMSException

    * @throws NamingException

    */

    public static void main(String[] args) throws JMSException ,NamingException {

    // TODO Auto-generated method stub

    InitialContext cs = getInitialContext();

    MessageSAFQueueSend mqs = new MessageSAFQueueSend();

    mqs.init(cs,queueName);

    mqs.inMssage();

    mqs.close();

    }

    // 发送消息

    public void inMssage() throws JMSException{

    Scanner input =new Scanner(System.in);

    System.out.println("请输入你要发送的消息");

    String msg = input.nextLine();

    textMessage.setText(msg);

    queueSender.send(textMessage);

    }

    //建立连接

    public void init(Context ctx,String queueName) throws JMSException,NamingException{

    queueConnectionFactory = (QueueConnectionFactory) ctx.lookup(queueConnectionFactoryName);

    queueConnection = queueConnectionFactory.createQueueConnection();

    queueSession =queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

    queue =(Queue) ctx.lookup(queueName);

    queueSender = queueSession.createSender(queue);

    textMessage = queueSession.createTextMessage();

    queueConnection.start();

    }

    //关闭连接

    public void close()throws JMSException{

    queueSender.close();

    queueSession.close();

    queueConnection.close();

    }

    //上下文的示例化

    public static InitialContext getInitialContext() throws NamingException{

    Properties env =new Properties();

    env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");

    env.put(Context.PROVIDER_URL, "t3://localhost:7002");

    return new InitialContext(env);

    }

}



赞(0)    操作        顶端 
总帖数
4
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论