I am successfully using PostgreSQL with JBoss 4.0.3 + EJB3 (all) for JMS and
the persistence layer. You need to do the following:
* Start PgSQL and create a new DB called "jms"
* remove the sample destinations:
deploy-hasingleton/jms/jbossmq-destinations-service.xml
* remove the HSQL JMS persistence: deploy-hasingleton/jms/hsqldb*
* deploy a datasource (called jmsDS) for the PostgreSQL DB used for JMS:
| <?xml version="1.0" encoding="UTF-8"?>
| <datasources>
| <local-tx-datasource>
| <jndi-name>jmsDS</jndi-name>
| <use-java-context>true</use-java-context>
| <connection-url>jdbc:postgresql://localhost:5432/jms</connection-url>
| <driver-class>org.postgresql.Driver</driver-class>
|
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
| <user-name>postgres</user-name>
| <password>password</password>
| <min-pool-size>1</min-pool-size>
| <max-pool-size>10</max-pool-size>
| <metadata>
| <type-mapping>PostgreSQL 8.0</type-mapping>
| </metadata>
| </local-tx-datasource>
| </datasources>
|
* deploy a datasource for your persistence layer
* add JDBC drivers for PgSQL to server/all/lib
* deploy the PgSQL JMS persistence:
deploy-hasingleton/jms/pgsql-jdbc-service.xml:
| <?xml version="1.0" encoding="UTF-8"?>
| <server>
|
|
| <!-- ====================================================================
-->
| <!-- Persistence and caching using PostgreSQL
-->
| <!-- ====================================================================
-->
|
| <!--
| | The destination manager is the core service within JBossMQ
| -->
| <mbean code="org.jboss.mq.server.jmx.DestinationManager"
name="jboss.mq:service=DestinationManager">
| <depends
optional-attribute-name="MessageCache">jboss.mq:service=MessageCache</depends>
| <depends
optional-attribute-name="PersistenceManager">jboss.mq:service=PersistenceManager</depends>
| <depends
optional-attribute-name="StateManager">jboss.mq:service=StateManager</depends>
| </mbean>
|
| <!--
| | The MessageCache decides where to put JBossMQ message that
| | are sitting around waiting to be consumed by a client.
| |
| | The memory marks are in Megabytes. Once the JVM memory usage hits
| | the high memory mark, the old messages in the cache will start
getting
| | stored in the DataDirectory. As memory usage gets closer to the
| | Max memory mark, the amount of message kept in the memory cache
aproaches 0.
| -->
| <mbean code="org.jboss.mq.server.MessageCache"
name="jboss.mq:service=MessageCache">
| <attribute name="HighMemoryMark">50</attribute>
| <attribute name="MaxMemoryMark">60</attribute>
| <attribute
name="CacheStore">jboss.mq:service=PersistenceManager</attribute>
| </mbean>
|
| <!--
| | The jdbc2 PersistenceManager is the new improved JDBC implementation.
| | This implementation allows you to control how messages are stored in
| | the database.
| |
| | Use this PM if you want the reliablity a relational database can
offer
| | you. The default configuration is known to work with hsqldb, other
| | databases will requrie teaking of the SqlProperties e.g. changing
table
| | colum definitions to database supported types.
| |
| | Take care that the selected blob column type can store
| | all message data. Some databases (e.g. mySQL) offer blob types with
| | different maximum capacity (e.g. mySQL-type BLOB=64K, LONGBLOB=2G).
| |
| | If you encouter problems with the configured BLOB_TYPE try a
different
| | setting. Valid settings are OBJECT_BLOB, BINARYSTREAM_BLOB and
BYTES_BLOB.
| -->
| <mbean code="org.jboss.mq.pm.jdbc3.PersistenceManager"
name="jboss.mq:service=PersistenceManager">
| <depends
optional-attribute-name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=jmsDS</depends>
| <attribute name="SqlProperties">
| BLOB_TYPE=BINARYSTREAM_BLOB
| UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGE_LOG SET TXID=?, TXOP=?
WHERE TXOP=?
| UPDATE_MARKED_REFERENCES = UPDATE JMS_REFERENCE_LOG SET TXID=?,
TXOP=? WHERE TXOP=?
| UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGE_LOG SET TXID=?,
TXOP=? WHERE TXOP=? AND TXID=?
| UPDATE_MARKED_REFERENCES_WITH_TX = UPDATE JMS_REFERENCE_LOG SET
TXID=?, TXOP=? WHERE TXOP=? AND TXID=?
| DELETE_MARKED_MESSAGES_WITH_TX = DELETE FROM JMS_MESSAGE_LOG WHERE
TXID IN (SELECT TXID FROM JMS_TRANSACTION_LOG) AND TXOP=?
| DELETE_MARKED_REFERENCES_WITH_TX = DELETE FROM JMS_REFERENCE_LOG
WHERE TXID IN (SELECT TXID FROM JMS_TRANSACTION_LOG) AND TXOP=?
| DELETE_TX = DELETE FROM JMS_TRANSACTION_LOG WHERE TXID = ?
| DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGE_LOG WHERE TXID=? AND
TXOP=?
| DELETE_MARKED_REFERENCES = DELETE FROM JMS_REFERENCE_LOG WHERE TXID=?
AND TXOP=?
| DELETE_TEMPORARY_MESSAGES = DELETE FROM JMS_MESSAGE_LOG WHERE TXOP='T'
| DELETE_TEMPORARY_REFERENCES = DELETE FROM JMS_REFERENCE_LOG WHERE
TXOP='T'
| INSERT_TX = INSERT INTO JMS_TRANSACTION_LOG (TXID) values(?)
| SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_TRANSACTION_LOG
| SELECT_MESSAGES_IN_DEST = SELECT MESSAGEID, MESSAGEBLOB FROM
JMS_MESSAGE_LOG WHERE DESTINATION=?
| SELECT_REFERENCES_IN_DEST = SELECT R.MESSAGEID, M.MESSAGEBLOB,
R.REDELIVERED, R.REDELIVERS FROM JMS_REFERENCE_LOG R, JMS_MESSAGE_LOG M \
| WHERE R.MESSAGEID = M.MESSAGEID AND
R.DESTINATION=?
| SELECT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGE_LOG
WHERE MESSAGEID=? AND DESTINATION=?
| INSERT_MESSAGE = INSERT INTO JMS_MESSAGE_LOG (MESSAGEID, DESTINATION,
MESSAGEBLOB, TXID, TXOP, LATECLONE) VALUES(?,?,?,?,?,?)
| INSERT_REFERENCE = INSERT INTO JMS_REFERENCE_LOG (MESSAGEID,
DESTINATION, TXID, TXOP, REDELIVERED, REDELIVERS) VALUES(?,?,?,?,?,?)
| MARK_MESSAGE = UPDATE JMS_MESSAGE_LOG SET TXID=?, TXOP=? WHERE
MESSAGEID=? AND DESTINATION=?
| MARK_REFERENCE = UPDATE JMS_REFERENCE_LOG SET TXID=?, TXOP=? WHERE
MESSAGEID=? AND DESTINATION=?
| DELETE_MESSAGE = DELETE FROM JMS_MESSAGE_LOG WHERE MESSAGEID=? AND
DESTINATION=?
| DELETE_REFERENCE = DELETE FROM JMS_REFERENCE_LOG WHERE MESSAGEID=?
AND DESTINATION=?
| UPDATE_MESSAGE = UPDATE JMS_MESSAGE_LOG SET MESSAGEBLOB=? WHERE
MESSAGEID=? AND DESTINATION=?
| UPDATE_REFERENCE = UPDATE JMS_REFERENCE_LOG SET REDELIVERED=?,
REDELIVERS=? WHERE MESSAGEID=? AND DESTINATION=?
| DELETE_ORPHANED_MESSAGES = DELETE FROM JMS_MESSAGE_LOG WHERE
LATECLONE = '1' AND MESSAGEID NOT IN (SELECT MESSAGEID FROM JMS_REFERENCE_LOG)
| DELETE_ALL_TXS = DELETE FROM JMS_TRANSACTION_LOG
| CREATE_REFERENCE_TABLE = CREATE TABLE JMS_REFERENCE_LOG ( MESSAGEID
INTEGER NOT NULL, \
| DESTINATION VARCHAR(4000) NOT NULL, TXID INTEGER, TXOP
CHAR(1), REDELIVERED CHAR(1), \
| REDELIVERS INTEGER, PRIMARY KEY (MESSAGEID, DESTINATION) )
| CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGE_LOG ( MESSAGEID
INTEGER NOT NULL, DESTINATION VARCHAR(255) NOT NULL, \
| TXID INTEGER, TXOP CHAR(1), LATECLONE CHAR(1), MESSAGEBLOB BYTEA,
PRIMARY KEY (MESSAGEID, DESTINATION) )
| CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTION_LOG ( TXID INTEGER )
| CREATE_TABLES_ON_STARTUP = TRUE
| </attribute>
| </mbean>
|
| <mbean code="org.jboss.mq.sm.jdbc.JDBCStateManager"
name="jboss.mq:service=StateManager">
| <depends
optional-attribute-name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=jmsDS</depends>
| <attribute name="SqlProperties">
| CREATE_TABLES_ON_STARTUP = TRUE
| CREATE_USER_TABLE = CREATE TABLE JMS_USERS (USERID VARCHAR(32) NOT
NULL, PASSWD VARCHAR(32) NOT NULL, \
| CLIENTID VARCHAR(128),
PRIMARY KEY(USERID))
| CREATE_ROLE_TABLE = CREATE TABLE JMS_ROLES (ROLEID VARCHAR(32) NOT
NULL, USERID VARCHAR(32) NOT NULL, \
| PRIMARY KEY(USERID,
ROLEID))
| CREATE_SUBSCRIPTION_TABLE = CREATE TABLE JMS_SUBSCRIPTIONS (CLIENTID
VARCHAR(128) NOT NULL, \
| SUBNAME VARCHAR(128) NOT
NULL, TOPIC VARCHAR(255) NOT NULL, \
| SELECTOR VARCHAR(4000),
PRIMARY KEY(CLIENTID, SUBNAME))
| GET_SUBSCRIPTION = SELECT TOPIC, SELECTOR FROM JMS_SUBSCRIPTIONS
WHERE CLIENTID=? AND SUBNAME=?
| LOCK_SUBSCRIPTION = SELECT TOPIC, SELECTOR FROM JMS_SUBSCRIPTIONS
WHERE CLIENTID=? AND SUBNAME=?
| GET_SUBSCRIPTIONS_FOR_TOPIC = SELECT CLIENTID, SUBNAME, SELECTOR FROM
JMS_SUBSCRIPTIONS WHERE TOPIC=?
| INSERT_SUBSCRIPTION = INSERT INTO JMS_SUBSCRIPTIONS (CLIENTID,
SUBNAME, TOPIC, SELECTOR) VALUES(?,?,?,?)
| UPDATE_SUBSCRIPTION = UPDATE JMS_SUBSCRIPTIONS SET TOPIC=?,
SELECTOR=? WHERE CLIENTID=? AND SUBNAME=?
| REMOVE_SUBSCRIPTION = DELETE FROM JMS_SUBSCRIPTIONS WHERE CLIENTID=?
AND SUBNAME=?
| GET_USER_BY_CLIENTID = SELECT USERID, PASSWD, CLIENTID FROM JMS_USERS
WHERE CLIENTID=?
| GET_USER = SELECT PASSWD, CLIENTID FROM JMS_USERS WHERE USERID=?
| POPULATE.TABLES.01 = INSERT INTO JMS_USERS (USERID, PASSWD) VALUES
('guest', 'guest')
| POPULATE.TABLES.02 = INSERT INTO JMS_USERS (USERID, PASSWD) VALUES
('j2ee', 'j2ee')
| POPULATE.TABLES.04 = INSERT INTO JMS_USERS (USERID, PASSWD) VALUES
('nobody', 'nobody')
| POPULATE.TABLES.06 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('guest','guest')
| POPULATE.TABLES.14 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('noacc','nobody')
| </attribute>
| </mbean>
| </server>
|
* change login-config.xml to use jmsDS for jbossmq realm
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3907577#3907577
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3907577
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user