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监听的重连功能,解决由于外 ...
随机推荐
- Oracle 连接 Visual Studio 的工具
Oracle 连接 Visual Studio 的工具 ① ② ③
- php常用的日期时间操作
//把当前日期时间以指定的格式转成字符串 $date_out=date ( 'Y-m-d H:i:s', time () ); //把时间字符串改成时间戳 $aab=strtotime($date_o ...
- js:语言精髓笔记6----作用域
js基础语法:由语句.表达式和变量构成: 语句是主要表达方式:单语句->复合语句(代码块)->程序片段(函数):js中没有单元和程序的概念: 作用域: 语法作用域与变量作用域的区别:前 ...
- Javascript的对象封装和继承有哪些方法?优劣分别是什么?
1.对象封装方法 (1)原始模式生成对象 直接将我们的成员写入对象中,用函数返回. 缺点:很难看出是一个模式出来的实例. function Stu(name, score) { ...
- LIST_ENTRY
一个常见的 Windows 2000 数据类型是 LIST_ENTRY 结构.内核使用该结构将所有对象维护在一个双向链表中.一个对象分属多个链表是很常见的, Flink 成员是一个向前链接,指向下一个 ...
- 数学 ACdream 1196 KIDx's Triangle
题目传送门 /* 这道题花了好长时间AC,思路有,但是表达式少写了括号一直乱码,囧! 注意:a==0时要特判:) */ #include <cstdio> #include <alg ...
- 游戏 scrollView
using UnityEngine; using System.Collections; public class LLL : MonoBehaviour { Vector2 scrollPositi ...
- KMP算法(转载)
转载http://blog.csdn.net/yutianzuijin/article/details/11954939 kmp算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法.不过由于其难以 ...
- c++ namespace的使用
** namespace:命名空间就是为解决C++中的变量.函数的命名冲突而服务的. ** namespace定义的格式基本格式是: namespace identifier { entitie ...
- 关于UIWebView的总结
关于UIWebView的总结 前言 今天参加了 Adobe 和 CSDN 组织的一个关于 PhoneGap 的开发讲座 ,而 PhoneGap 在 iOS 设备上的实现就是通过 UIWebView 控 ...