jboss4.2.3建立oracle JMS應用

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   os   io   使用   java   

一、基本配置

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("成功發送訊息!");    }}
View Code

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();    }}
View Code

 

jboss4.2.3建立oracle JMS應用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.