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监听的重连功能,解决由于外 ...
随机推荐
- Codeforces Round #352 (Div. 2) C. Recycling Bottles 贪心
C. Recycling Bottles It was recycling day in Kekoland. To celebrate it Adil and Bera went to Centr ...
- Atomic
CAS原语 CAS(compare and swap)是一组原语指令,用来实现多线程下的变量同步. public final boolean compareAndSet(int expect, int ...
- 寒假 D3 D Modular Inverse
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB ...
- LCS(打印路径) POJ 2250 Compromise
题目传送门 题意:求单词的最长公共子序列,并要求打印路径 分析:LCS 将单词看成一个点,dp[i][j] = dp[i-1][j-1] + 1 (s1[i] == s2[j]), dp[i][j] ...
- LightOJ1051 Good or Bad(DP)
这题感觉做法应该挺多吧,数据规模那么小. 我用DP乱搞了.. dp0[i][j]表示字符串前i位能否组成末尾有连续j个元音字母 dp1[i][j]表示字符串前i位能否组成末尾有连续j个辅音字母 我的转 ...
- CodeForces Round 194 Div2
A. Candy Bagstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputs ...
- startInstrumentation asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
由于手头上一直没有android level 17及以上版本的手机,有一个shell命令启动脚本的BUG,发生在SDK level 17及以上 API>=17中加入了INTERACT_ACROS ...
- Codeforces Round #192 (Div. 2) A. Cakeminator
#include <iostream> #include <vector> using namespace std; int main(){ int r,c; cin > ...
- HDU 4632 Palindrome subsequence(DP)
题目链接 做的我很无奈,当时思路很乱,慌乱之中,起了一个想法,可以做,但是需要优化.尼玛,思路跑偏了,自己挖个坑,封榜之后,才从坑里出来,过的队那么多,开始的时候过的那么快,应该就不是用这种扯淡方法做 ...
- [NOI 2014]做题记录
[NOI2014]起床困难综合症 按位贪心 #include <algorithm> #include <iostream> #include <cstring> ...