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();
}
}
jboss4.2.3建立oracle JMS应用的更多相关文章
- jmeter 建立一个JMS主题测试计划
创建两个线程组和组 每一个到10迭代. 总消息线程(6)x(1消息) (重复10次)= 60消息. 建立测试计划,您将使用 以下元素: 线程组 , JMS的出版商 , JMS用户 , 图结果 . 一般 ...
- jmeter 建立一个JMS点对点测试计划
确保所需的jar文件在JMeter的 自由 目录中. 如果他们不是,关闭JMeter, 重启JMeter复制jar文件. 看到 开始 获取详细信息. 测试的设置是1与5线程发送4 thread ...
- Sqlserver建立Oracle的鏈接服務器
--建立数据库链接服务器 EXEC sp_addlinkedserver @server =N'TestOracle', --要创建的链接服务器别名 @srvproduct=N'Oracle', -- ...
- 使用power designer,PL/SQL,cmd建立oracle数据库
这一系列操作需要powerDesigner,PL/SQL工具 1.首先使用powerDesigner建立概念模型 2.概念模型界面例子 3.其中建立概念模型操作图标详解 4.建立物理模型 5.生成数据 ...
- plsql 建立oracle作业
--.plsql中学习job --学习job --建表 create table test_job(para_date date); commit; insert into test_job valu ...
- 服务器之间建立oracle之间的关联语句
create public database link DBLINK_WZGTAMS CONNECT TO WZGTAMS identified by WZGTAMS using ' (DESCRIP ...
- 建立Oracle GoldenGate凭证
了解如何为与数据库交互的流程创建数据库用户,分配正确的权限并防止未经授权使用凭据. 主题: 为Oracle GoldenGate分配凭证 保护Oracle GoldenGate凭证 3.1 为Orac ...
- MySQL中建立Oracle中SCOTT数据示例
1.创建 scott 数据库 CREATE DATABASE scott; 2.创建 scott 数据库中的 dept 表 CREATE TABLE dept( deptno INT UNSIGNED ...
- JMS监听Oracle AQ
该文档中,oracle版本为11g,jdk版本1.8,java项目为maven构建的springboot项目,springboot的版本为2.1.6,并使用了定时任务来做AQ监听的重连功能,解决由于外 ...
随机推荐
- Xamarin Anroid开发教程之下载安装Xamarin
Xamarin Anroid开发教程之下载安装Xamarin Xamarin在过去安装时都会检查系统中是否安装了前面所提供的内容.而后来,Xamarin安装时只提供安装步骤,其它内容都需要读者自己下载 ...
- 2^x mod n = 1
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- POJ3581 Sequence(后缀数组)
题意:给一个串,串的第一个字符比后面的都大,要把它分成三段,然后反转每一段,求能得到的字典序最小的串是什么. 首先,第一段是可以确定的:把原串反转,因为第一个字符是最大的,它是唯一的,不存在反转串的后 ...
- LightOJ1057 Collecting Gold(状压DP)
这道题可以想到几点: 整个行程可以看作一次次的行走,每次行走都是用最短的路程从某一非空点到达另外一非空点: 两点间最少的步数是二者x和y坐标差的最大值: 返回原点这个过程,肯定是取完最后一个黄金后直接 ...
- BZOJ1035 : [ZJOI2008]Risk
首先要将这个图连通,方法是通过扫描线+set求出每个连通块最高的点上方的第一条边,然后向交点连边. 然后把边拆成两条双向边,每次找到一条没走过的边,找到极角排序后它的反向边的后继,直到回到这条边.根据 ...
- HDU 4511 (AC自动机+状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4511 题目大意:从1走到N,中间可以选择性经过某些点,比如1->N,或1->2-> ...
- 1^b+2^b+3^b+...+n^b数列
首先,这是我自己推出来的,O(n^2),常数巨大.所以无能为力优化!所以求此数列的公式!求优化!!! 主要思想:要算b次的,那么就要先算b+1次的. 首先,我用F(i, j)表示杨辉三角第i层第j个, ...
- 【COGS】714. USACO 1.3.2混合牛奶(贪心+水题)
http://cojs.tk/cogs/problem/problem.php?pid=714 在hzwer的刷题记录上,默默地先跳过2题T_T...求凸包和期望的..T_T那是个啥..得好好学习 看 ...
- VTK 6.3.0 Qt 5.4 MinGW 4.9.1 Configuration 配置
Download VTK 6.3.0 Download Qt 5.4 with MinGW 4.9.1 Download CMake 3.2.0 I assume you've already ins ...
- [LintCode] Implement Trie 实现字典树
Implement a trie with insert, search, and startsWith methods. Have you met this question in a real i ...