jboss4.2.3建立oracle JMS应用

一、基本配置

1 增加oracle驱动文件,ojdbc6.jar,不能使用小于该版本的jdbc驱动,jboss-4.2.3.GA\server\default\lib

2 增加retrotranslator-runtime-1.2.3.jar,jboss-4.2.3.GA\server\default\lib

3  配置数据源

jboss-4.2.3.GA\server\default\deploy\jms 增加oracle-ds.xml

4 配置JBOSS的JMS环境

拷贝jboss4.2.3\docs\examples\jms下的mysql-jdbc2-service.xml拷到jboss4.2.3\server\default\deploy\jms
下。并将数据库DataSourceBinding 改成name=OracleDS

5 增加oracle-jdbc-state-service.xml文件

修改\jboss4.2.3\server\default\deploy\jms 目录下的hsqldb-jdbc-state-service文件改名为oracle-jdbc-state-service.xml ,

并将<depends optional-attribute-name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>

修改成name=OracleDS用于连接你的MySql的数据库。

以上配置完成之后会在oracle数据中创建如下以jms为前缀的表:

select * from  JMS_USERS;
select * from  JMS_ROLES;
select  * from  JMS_MESSAGES;

等等

二 、安全策略配置

在以上配置的基础上继续完成如下配置

1. jbossmq-destinations-service.xml 增加自定义的queue,并且引用默认的安全管理器

jboss-4.2.3.GA\server\default\deploy\jms\jbossmq-destinations-service.xml

<mbean code="org.jboss.mq.server.jmx.Queue"
      name="jboss.mq.destination:service=Queue,name=fasQueue">
         <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
         <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends>
     <attribute name="MessageCounterHistoryDayLimit">-1</attribute>
     <attribute name="SecurityConf">
      <security>
        <role name="guest" read="false" write="false"/>
        <role name="publisher" read="true" write="true" create="false"/>
        <role name="noacc" read="false" write="false" create="false"/>
        <role name="aaarole" read="true" write="true" create="false"/>
      </security>
    </attribute>
    </mbean>

2. 修改jbossmq-service.xml中安全域,可以使用默认的“jbossmq”

jboss-4.2.3.GA\server\default\deploy\jms\jbossmq-service.xml

<mbean code="org.jboss.mq.security.SecurityManager" name="jboss.mq:service=SecurityManager">
    <attribute name="DefaultSecurityConfig">
      <security>
        <role name="guest" read="true" write="true" create="true"/>
      </security>
    </attribute>
    <attribute name="SecurityDomain">java:/jaas/jbossmq</attribute>
    <depends>jboss.security:service=JaasSecurityManager</depends>
    <depends optional-attribute-name="NextInterceptor">jboss.mq:service=DestinationManager</depends>
  </mbean>

3. 修改安全策略文件,增加新的安全控制策略,本文仍旧采用默认策略“jbossmq”,但是需要修改默认的数据源

server/default/conf/login-config.xml

<!-- Security domain for JBossMQ -->
    <application-policy name = "jbossmq">
       <authentication>
          <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
             flag = "required">
             <module-option name = "unauthenticatedIdentity">guest</module-option>
             <module-option name = "dsJndiName">java:/OracleDS</module-option>
             <module-option name = "principalsQuery">SELECT PASSWD FROM JMS_USERS WHERE USERID=?</module-option>
             <module-option name = "rolesQuery">SELECT ROLEID, ‘Roles‘ FROM JMS_ROLES WHERE USERID=?</module-option>
          </login-module>
       </authentication>
    </application-policy>

三、测试代码

JmsSender.java

package com.demo.sender;

import java.util.Properties;
import javax.jms.JMSException;
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.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

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

        Properties env = new Properties();

        env.put(Context.PROVIDER_URL, "127.0.0.1:1099");

        env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");

        env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");

        Context context = new InitialContext(env);

        QueueConnectionFactory factory = (QueueConnectionFactory) context.lookup("ConnectionFactory");

        //QueueConnection queueConnection = factory.createQueueConnection();

        QueueConnection queueConnection = factory.createQueueConnection("aaa","aaa");

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

        Queue queue = (Queue) context.lookup("queue/fasQueue");

        TextMessage message = queueSession.createTextMessage();

        message.setText("hello china! 你好,中国.");

        QueueSender queueSender = queueSession.createSender(queue);

        queueSender.send(queue, message);
        System.out.println("成功发送消息!");
    }

}

JmsReaderv.java

package com.demo.reader;

import java.util.Properties;

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

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

        Properties env = new Properties();
        env.put(Context.PROVIDER_URL, "localhost:1099");
        env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
        env.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");

        //连接服务器
        InitialContext ic = new InitialContext(env);

        //QueueConnection cs = ((QueueConnectionFactory) ic.lookup("ConnectionFactory")).createQueueConnection();

        QueueConnection cs = ((QueueConnectionFactory) ic.lookup("ConnectionFactory")).createQueueConnection("aaa", "aaa");

        Queue q = (Queue) ic.lookup("queue/fasQueue");

        QueueSession qss = cs.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);

        QueueReceiver qr = qss.createReceiver(q);
        //启动链接
        cs.start();
        //开始接受,然后处理接收到的 message
        TextMessage message = (TextMessage) qr.receive();

        System.out.println(message.getText());
        System.out.println("成功读取消息");
        cs.close();
    }
}

时间: 2024-10-09 19:24:45

jboss4.2.3建立oracle JMS应用的相关文章

建立Oracle连线的小问题

在建立ORACLE的连线时,有时在装ORACLE时,会有DOMAIN NAME在,如果其他电脑没有设定的话,那直接从tnsnames.ora copy过来时就要加上那个domain name,否则会连不到哦! 另一个方式就是直接用"Oracle Net 组态辅助程序"设定就可以了哦! 如下,RM.COM.TW就是DOMAIN NAME哦! RMORA.RM.COM.TW = ? (DESCRIPTION = ??? (ADDRESS_LIST = ????? (ADDRESS = (P

jmeter 建立一个JMS主题测试计划

创建两个线程组和组 每一个到10迭代. 总消息线程(6)x(1消息) (重复10次)= 60消息. 建立测试计划,您将使用 以下元素: 线程组 , JMS的出版商 , JMS用户 , 图结果 . 一般笔记JMS:目前有两个JMS采样. 一个使用JMS主题 和另一种使用队列. 主题通常被称为发布/订阅消息传递的消息. 主题消息通常是用在这种情况下,消息由生产者和出版 被多个订阅者. 队列消息通常是用于交易 发送方期待响应. 消息传递系统有很大的不同 正常的HTTP请求. 在HTTP中,单个用户发送

jmeter 建立一个JMS点对点测试计划

确保所需的jar文件在JMeter的 自由 目录中. 如果他们不是,关闭JMeter, 重启JMeter复制jar文件. 看到 开始 获取详细信息. 测试的设置是1与5线程发送4 threadgroup每通过一个请求队列的消息. 固定应答队列将用于监测应答消息. 建立测试计划,您将使用 以下元素: 线程组 , JMS点对点 , 图结果 . 一般笔记JMS:目前有两个JMS采样. 一个使用JMS主题 和另一种使用队列. 主题通常被称为发布/订阅消息传递的消息. 主题消息通常是用在这种情况下,消息由

Sqlserver建立Oracle的鏈接服務器

--建立数据库链接服务器 EXEC sp_addlinkedserver @server =N'TestOracle', --要创建的链接服务器别名 @srvproduct=N'Oracle', --产品名称 @provider=N'OraOLEDB.Oracle', --OLE DB 驱动名称 @datasrc=N' (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PO

plsql 建立oracle作业

--1.plsql中学习job --学习job --建表 create table test_job(para_date date); commit; insert into test_job values(sysdate); commit; select * from test_job; --建立存贮过程 create or replace procedure test_jobproce as begin insert into test_job values(sysdate); end te

服务器之间建立oracle之间的关联语句

create public database link DBLINK_WZGTAMS CONNECT TO WZGTAMS identified by WZGTAMS using ' (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.112)(PORT = 1521)) ) (CONNECT_DATA = (SID = orcl11g) (SERVER = DEDICATED) ) )'; 接

通过JMS监听Oracle AQ,在数据库变化时触发执行Java程序

环境说明 一Oracle高级消息队列AQ 创建消息负荷payload 创建队列表 创建队列并启动 队列的停止和删除 入队消息 出队消息 二Java使用JMS监听并处理Oracle AQ队列 创建连接参数类 创建消息转换类 主类进行消息处理 三监控表记录变化通知Java 创建表 创建存储过程 创建触发器 环境说明 本实验环境基于Oracle 12C和JDK1.8,其中Oracle 12C支持多租户特性,相较于之前的Oracle版本,使用'C##用户名表示用户',例如如果数据库用户叫kevin,则登

Linux下oracle系统安装到数据库建立配置及最后oracle的dmp文件导入一站式操作记录

简介 之前也在linux下安装过oralce,可每次都是迷迷糊糊的,因为大脑一片空白,网上随便看见一个文档就直接复制,最后搞了乱七八糟,虽然装上了,却乱得很,最近几天因为离职,交接的时候又要安装oracle,发现老遇到错误,导致装不上了,通过这次我好好的研究了下oracle,非要搞清楚它,现在记录下来,希望能给其他网上朋友遇到问题时提供点帮助,该篇文件借鉴大量网友的总结,首先谢谢他们! 安装环境 Linux 服务器: SuSe11-linux      64/32位 Oracle服务器: Ora

Linux下oracle11gR2系统安装到数据库建立配置及最后oracle的dmp文件导入一站式操作记录(转)

简介 之前也在linux下安装过oralce,可每次都是迷迷糊糊的,因为大脑一片空白,网上随便看见一个文档就直接复制,最后搞了乱七八糟,虽然装上了,却乱得很,最近几天因为离职,交接的时候又要安装oracle,发现老遇到错误,导致装不上了,通过这次我好好的研究了下oracle,非要搞清楚它,现在记录下来,希望能给其他网上朋友遇到问题时提供点帮助,该篇文件借鉴大量网友的总结,首先谢谢他们! 安装环境 Linux 服务器: SuSe11-linux      64/32位 Oracle服务器: Ora