[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] xmlBlaster with Firebird Database



I didn't see this message on the list (because I think I used HTML) but I will send it anyways
using plain text...
----------------
Thanks for the quick reply Marcel.
 
I actually made it work believe it or not. Here is my setup:
Tomcat 5.5.7
Firebird 1.5.0
xmlBlaster
 
Tomcat is setup to validate it's users using the firebird database instead of a file. There is a
jdbc connector that you can download from http://www.ibphoenix.com. 
To get xmlblaster to use Firebird as it's persistent datastore, you need to put the jdbc jar file
(called firebirdsql-full.jar) into the <xmlblaster_home>\lib directory.
 
Next you need to customize the xmlblaster.properties file and put that into your <xmlBlaster_home>
directory (if you don't have it there yet). This is the hard part as there are alot of entries you
need to add. Fortunately, you can copy the lines from the Oracle example and just rename it to
firebird. I also commented out all the other databases that I am not going to use.
 
Here is the declaration of the jdbc plugin:
# Settings for the persistence plugins (StoragePlugin and QueuePlugin) for FIREBIRD
#
JdbcStorage[firebird]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
                      url=jdbc:firebirdsql:localhost/3050:c:/Firebird/Data/mydb.fdb,\
                      user=<your defined user here>,\
                      password=<the password for the user>,\
                      connectionPoolSize=1,\
                      connectionBusyTimeout=90000,\
                      maxWaitingThreads=300,\
                      tableNamePrefix=XB_,\
                      entriesTableName=ENTRIES,\
                      dbAdmin=true
 
Next locate the lines that look like this and add:
StoragePlugin[JDBC][1.0]=${JdbcStorage[firebird]}
I commented out the rest of these lines.
 
Next locate the lines that look like this and add:
QueuePlugin[JDBC][1.0]=${JdbcStorage[firebird]}
I commented out the rest of these lines.
 
Next, I modified this entry:
JdbcDriver.drivers=org.hsqldb.jdbcDriver:\
                   org.ldbc.jdbc.jdbcDriver:\
                   org.firebirdsql.jdbc.FBDriver
Notice that I took out the entries for the other databases.
 
Next I have the database mappings:
JdbcDriver.mapping[firebird]=string=VARCHAR(128),longint=decimal(18,0),int=integer,blob=varchar(32000),blobVarName=msg,boolean=CHAR(1)

Finally, I had a hell of a time getting xmlBlaster to create the XB_ENTRIES table (mainly because
my mappings to longint were incorrect at first) so I manually created the table:
 
CREATE TABLE XB_ENTRIES (
  DATAID    DECIMAL(18, 0),
  QUEUENAME VARCHAR(100),
  PRIO      INTEGER,
  FLAG      VARCHAR(100),
  DURABLE   CHAR(1),
  BYTESIZE  DECIMAL(18, 0),
  MSG       BLOB SUB_TYPE 0 SEGMENT SIZE 80
);

If the mappings are correct, like in the line above, xmlBlaster should be able to create the table
automatically.
 
I've attached the xmlBlaster.properties file for anyone who wants it. I don't know if it will show
up in the list though.
 
BTW, I don't know if this is right, but the webapp needs the xmlBlaster.jar file in its
web-inf\lib directory. I had to replace the xmlBlaster.properties in the jar file with my own
customized one in order for it to work.
 
It took me a long time (actually about 6 hours of fiddling around) to get this all working with
Tomcat and a web service that publishes messages to xmlBlaster. Now, the only thing I have to do
is get an applet to retrieve my messages and I'm happy.
 
Hope this helps.

--- Michele <laghi at swissinfo.org> wrote:

> Hi Chris,
> 
> chris lau wrote:
> > Hi,
> > 
> > has anyone had any success with using Firebird 1.5 as
> > the database for persistent messages?
> > 
> as far as I know nobody has tested it (at least did not report it to the 
> mantainers)
> 
> > If so, how would I go about setting up the
> > xmlBlaster.properties file? Seems like there are alot
> > of properties to change.
> > 
> I guess you have to try the configuration parameters on your own.
> 
> > I was trying to setup a web service on Tomcat (with
> > Firebird as the database) that publishes messages to
> > XmlBlaster running on the same machine. However, the
> > tomcat logs showed this error about no suitable
> > driver. No suitable driver for what?
> > 
> No suitable driver here means the name of the JDBC Driver for Firebird 
> is not among the ones specified under 'JdbcDriver.drivers' in the 
> xmlBlaster.properties file. Make also sure the driver is in the classpath.
> 
> more details on
> http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.service.rdbms.html
> 
> Good luck in trying firebird. Please report success (possibly with 
> enclosed the configuration used)
> 
> Regards
> Michele
> 
> 
> 
> > ConnectQos is 
> >  <qos>
> >   <securityService type="htpasswd"
> > version="1.0"><![CDATA[
> >    <user>SYSTEM</user>
> >    <passwd>secret</passwd>
> >   ]]></securityService>
> >   <session name='client/SYSTEM' timeout='86400000'
> > maxSessions='10' clearSessions='false'
> > reconnectSameClientOnly='false'/>
> >   <queue relating='connection' maxEntries='10000000'
> > maxEntriesCache='1000'>
> >    <address type='IOR' dispatchPlugin='undef'>
> >     
> >    </address>
> >   </queue>
> >   <queue relating='subject'/>
> >   <queue relating='callback' maxEntries='1000'
> > maxEntriesCache='1000'/>
> >  </qos>
> > [Jun 15, 2005 11:47:11 AM INFO  http-8443-Processor24
> > XmlBlasterAccess] Loaded security plugin=htpasswd
> > version=1.0
> > [Jun 15, 2005 11:47:11 AM ERROR http-8443-Processor24
> > JdbcConnectionPool-jdbc:hsqldb:C:\Documents and
> > Settings\Default User\tmp\clientSYSTEM1118861231411] 
> > connecting to DB, error code : '0 : No suitable
> > driver' DB configuration details follow (check if the
> > DB is running)
> > [Jun 15, 2005 11:47:11 AM INFO  http-8443-Processor24
> > JdbcConnectionPool-jdbc:hsqldb:C:\Documents and
> > Settings\Default User\tmp\clientSYSTEM1118861231411]
> > diagnostics: initialize -url                 :
> > 'jdbc:hsqldb:C:\Documents and Settings\Default
> > User\tmp\clientSYSTEM1118861231411'
> > [Jun 15, 2005 11:47:11 AM INFO  http-8443-Processor24
> > JdbcConnectionPool-jdbc:hsqldb:C:\Documents and
> > Settings\Default User\tmp\clientSYSTEM1118861231411]
> > diagnostics: initialize -user                : 'sa'
> > [Jun 15, 2005 11:47:11 AM INFO  http-8443-Processor24
> > JdbcConnectionPool-jdbc:hsqldb:C:\Documents and
> > Settings\Default User\tmp\clientSYSTEM1118861231411]
> > diagnostics: initialize -password            : ''
> > [Jun 15, 2005 11:47:11 AM INFO  http-8443-Processor24
> > JdbcConnectionPool-jdbc:hsqldb:C:\Documents and
> > Settings\Default User\tmp\clientSYSTEM1118861231411]
> > diagnostics: initialize -max number of conn  : '1'
> > [Jun 15, 2005 11:47:11 AM INFO  http-8443-Processor24
> > JdbcConnectionPool-jdbc:hsqldb:C:\Documents and
> > Settings\Default User\tmp\clientSYSTEM1118861231411]
> > diagnostics: initialize -conn busy timeout   : '90000'
> > [Jun 15, 2005 11:47:11 AM INFO  http-8443-Processor24
> > JdbcConnectionPool-jdbc:hsqldb:C:\Documents and
> > Settings\Default User\tmp\clientSYSTEM1118861231411]
> > diagnostics: initialize -driver list         :
> >
>
'org.hsqldb.jdbcDriver:org.ldbc.jdbc.jdbcDriver:com.mckoi.JDBCDriver:sun.jdbc.odbc.JdbcOdbcDriver:ORG.as220.tinySQL.dbfFileDriver:oracle.jdbc.driver.OracleDriver:com.microsoft.jdbc.sqlserver.SQLServerDriver:com.mysql.jdbc.Driver:org.postgresql.Driver:de.sag.jdbc.adabasd.ADriver:com.sybase.jdbc2.jdbc.SybDriver:SQLite.JDBCDriver'
> > [Jun 15, 2005 11:47:11 AM INFO  http-8443-Processor24
> > JdbcConnectionPool-jdbc:hsqldb:C:\Documents and
> > Settings\Default User\tmp\clientSYSTEM1118861231411]
> > diagnostics: initialize -max. waiting Threads: '300'
> > java.sql.SQLException: No suitable driver
> > 	at java.sql.DriverManager.getConnection(Unknown
> > Source)
> > 	at java.sql.DriverManager.getConnection(Unknown
> > Source)
> > 	at
> > org.xmlBlaster.util.queue.jdbc.JdbcConnectionPool.connect(JdbcConnectionPool.java:235)
> > 	at
> > org.xmlBlaster.util.queue.jdbc.JdbcConnectionPool.initialize(JdbcConnectionPool.java:423)
> > 	at
> >
>
org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin.getJdbcQueueManagerCommonTable(JdbcQueueCommonTablePlugin.java:155)
> > 	at
> >
>
org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin.initialize(JdbcQueueCommonTablePlugin.java:217)
> > 	at
> > org.xmlBlaster.util.queue.QueuePluginManager.getPlugin(QueuePluginManager.java:83)
> > 	at
> > org.xmlBlaster.util.queue.QueuePluginManager.getPlugin(QueuePluginManager.java:59)
> > 	at
> >
>
org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.initialize(CacheQueueInterceptorPlugin.java:266)
> > 	at
> > org.xmlBlaster.util.queue.QueuePluginManager.getPlugin(QueuePluginManager.java:83)
> > 	at
> > org.xmlBlaster.util.queue.QueuePluginManager.getPlugin(QueuePluginManager.java:73)
> > 	at
> > org.xmlBlaster.client.XmlBlasterAccess.connect(XmlBlasterAccess.java:220)
> > 	at
> > RequestHandler.doSendAppointment(RequestHandler.java:488)
> > 	at RequestHandler.doPost(RequestHandler.java:155)
> > 	at RequestHandler.doGet(RequestHandler.java:73)
> > 	at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > 	at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > 	at
> >
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> > 	at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> > 	at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
> > 	at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> > 	at
> > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
> > 	at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> > 	at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> > 	at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
> > 	at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> > 	at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
> > 	at
> >
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731)
> > 	at
> > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
> > 	at
> >
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
> > 	at
> > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
> > 	at java.lang.Thread.run(Unknown Source)
> > [Jun 15, 2005 11:47:11 AM ERROR http-8443-Processor24
> > org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin-connection:client/SYSTEM]
> > Could not initialize the persistent queue
> > 'connection:client/SYSTEM'. Is the JDBC Driver jar
> > file in the CLASSPATH ? Is the DB up and running ? We
> > continue RAM based ...XmlBlasterException
> > errorCode=[resource.db.unavailable]
> > serverSideException=false
> >
>
location=[org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin-connection:client/SYSTEM/type
> > 'JDBC' version '1.0'] message=[#1.0.2
> > getJdbcCommonTableQueueManager: sql exception when
> > initializing the connection pool :
> > java.sql.SQLException: No suitable driver] [See URL
> >
>
http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.errorcodes.listing.html#resource.db.unavailable]
> > The propery settings are:
> >  <queue relating='connection' maxEntries='10000000'
> > maxEntriesCache='1000'>
> >   <address type='IOR' dispatchPlugin='undef'>
> >    
> >   </address>
> >  </queue>
> > errorCode=resource.db.unavailable message=#1.0.2
> > getJdbcCommonTableQueueManager: sql exception when
> > initializing the connection pool :
> > java.sql.SQLException: No suitable driver
> > 	at
> >
>
org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin.getJdbcQueueManagerCommonTable(JdbcQueueCommonTablePlugin.java:179)
> > 	at
> >
>
org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin.initialize(JdbcQueueCommonTablePlugin.java:217)
> > 	at
> 
=== message truncated ===


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
#------------------------------------------------------------------------------
# Name:      xmlBlaster.properties
# Project:   xmlBlaster.org
# Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
# Comment:   Properties for xmlBlaster MOM server, copy into your home directory
# See:       http://www.xmlblaster.org/xmlBlaster/doc/requirements/util.property.html
# See:       http://www.xmlblaster.org/xmlBlaster/doc/requirements/util.property.env.html#
#All JVM system variables are supported, e.g.
#   ${user.dir}
#   ${user.home}
#could be used and would be replaced to the current directory and
#the users home directory respectively.
#
#Further you can reference all variables in this file or from command line
#with ${...}
#------------------------------------------------------------------------------


#========================IMPORTANT NOTE========================================
# NOTE: If you uncomment the following 7 lines for the server, and the next 1 for the client, xmlBlaster
# will run RAM based only (without any database)
# Server side
#persistence/msgUnitStore/defaultPlugin=RAM,1.0
#persistence/session/defaultPlugin=RAM,1.0
#persistence/subscribe/defaultPlugin=RAM,1.0
#queue/subject/defaultPlugin=RAM,1.0
#queue/history/defaultPlugin=RAM,1.0
#queue/callback/defaultPlugin=RAM,1.0
#useTopicStore=false

# Client side
#queue/connection/defaultPlugin=RAM,1.0

# NOTE: If you don't want the embedded hsqldb database to handle persistence you need to install a
# Postgres, Oracle or MS-SQL-Server database
#   See
#    xmlBlaster/src/java/org/xmlBlaster/util/queue/jdbc/README
#    http://www.xmlblaster.org/xmlBlaster/doc/requirements/queue.jdbc.postgres.html
#    http://www.xmlblaster.org/xmlBlaster/doc/requirements/queue.jdbc.oracle.html
#    http://www.xmlblaster.org/xmlBlaster/doc/requirements/queue.jdbc.sqlserver.html

#==============================================================================


#------------------------------------------------------------------------------
# Authentication and Authorization
# SEE: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/security.htpasswd.html
Security.Server.Plugin[simple][1.0]=org.xmlBlaster.authentication.plugins.simple.Manager
Security.Server.Plugin[gui][1.0]=org.xmlBlaster.authentication.plugins.demo.Manager
Security.Server.Plugin[ldap][1.0]=org.xmlBlaster.authentication.plugins.ldap.Manager
Security.Server.Plugin[htpasswd][1.0]=org.xmlBlaster.authentication.plugins.htpasswd.Manager

# NONE switches off security checks in passwd file:
Security.Server.Plugin.htpasswd.secretfile=NONE
#Security.Server.Plugin.htpasswd.secretfile=${user.home}${file.separator}xmlBlaster.htpasswd
Security.Server.Plugin.htpasswd.allowPartialUsername=false

# Force on client side a specified plugin (as default)
# Only if you access xmlBlaster with java clients and
# use our helper class XmlBlasterAccess.java
# With "gui,1.0" will the server popup a GUI panel
#Security.Client.DefaultPlugin=htpasswd,1.0
Security.Client.Plugin[gui][1.0]=org.xmlBlaster.authentication.plugins.demo.ClientPlugin
Security.Client.Plugin[simple][1.0]=org.xmlBlaster.authentication.plugins.simple.ClientPlugin
Security.Client.Plugin[ldap][1.0]=org.xmlBlaster.authentication.plugins.ldap.ClientPlugin
Security.Client.Plugin[htpasswd][1.0]=org.xmlBlaster.authentication.plugins.htpasswd.ClientPlugin
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# List of all xmlBlaster access protocol drivers (I_Driver and I_Callback implementations)
# For supported protocol types see xmlBlaster/src/java/org/xmlBlaster/protocol directory
# SEE: http://www.xmlblaster.org/xmlBlaster/doc/requirements/protocol.html
# NOTE: Please use xmlBlasterPlugins.xml to configure which protocols to offer

CbProtocolPlugin[IOR][1.0]=org.xmlBlaster.protocol.corba.CallbackCorbaDriver
# The CallbackSocketDriver is a fake as we tunnel back through the same socket
# But we need it for persistent Session/Subscription recovery on server startup
CbProtocolPlugin[SOCKET][1.0]=org.xmlBlaster.protocol.socket.CallbackSocketDriver
CbProtocolPlugin[socket_ssl][1.0]=org.xmlBlaster.protocol.socket.CallbackSocketDriver,SSL=true,compress/type=zlib:stream
#CbProtocolPlugin[RMI][1.0]=org.xmlBlaster.protocol.rmi.CallbackRmiDriver
CbProtocolPlugin[XMLRPC][1.0]=org.xmlBlaster.protocol.xmlrpc.CallbackXmlRpcDriver
CbProtocolPlugin[LOCAL][1.0]=org.xmlBlaster.protocol.local.CallbackLocalDriver
CbProtocolPlugin[JDBC][1.0]=org.xmlBlaster.protocol.jdbc.CallbackJdbcDriver
#CbProtocolPlugin[SOAP][1.0]=org.xmlBlaster.protocol.soap.CallbackSoapDriver,classpath=soap/jdom.jar:soap/log4j-core.jar:soap/log4j.jar:soap/saw.jar:soap/soap.jar:soap/xerces.jar
CbProtocolPlugin[EMAIL][1.0]=org.xmlBlaster.protocol.email.CallbackEmailDriver
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# On client side only

# Register the client side protocol plugin to connect to server
ClientProtocolPlugin[IOR][1.0]=org.xmlBlaster.client.protocol.corba.CorbaConnection
ClientProtocolPlugin[SOCKET][1.0]=org.xmlBlaster.client.protocol.socket.SocketConnection
ClientProtocolPlugin[socket_ssl][1.0]=org.xmlBlaster.client.protocol.socket.SocketConnection,SSL=true,compress/type=zlib:stream
#ClientProtocolPlugin[RMI][1.0]=org.xmlBlaster.client.protocol.rmi.RmiConnection
ClientProtocolPlugin[XMLRPC][1.0]=org.xmlBlaster.client.protocol.xmlrpc.XmlRpcConnection
ClientProtocolPlugin[LOCAL][1.0]=org.xmlBlaster.client.protocol.local.LocalConnection
#ClientProtocolPlugin[SOAP][1.0]=org.xmlBlaster.client.protocol.soap.SoapConnection

# Register the client side callback server plugins:
ClientCbServerProtocolPlugin[IOR][1.0]=org.xmlBlaster.client.protocol.corba.CorbaCallbackServer
ClientCbServerProtocolPlugin[SOCKET][1.0]=org.xmlBlaster.client.protocol.socket.SocketCallbackImpl
ClientCbServerProtocolPlugin[socket_ssl][1.0]=org.xmlBlaster.client.protocol.socket.SocketCallbackImpl,SSL=true,compress/type=zlib:stream
#ClientCbServerProtocolPlugin[RMI][1.0]=org.xmlBlaster.client.protocol.rmi.RmiCallbackServer
ClientCbServerProtocolPlugin[XMLRPC][1.0]=org.xmlBlaster.client.protocol.xmlrpc.XmlRpcCallbackServer
ClientCbServerProtocolPlugin[LOCAL][1.0]=org.xmlBlaster.client.protocol.local.LocalCallbackImpl
#ClientCbServerProtocolPlugin[SOAP][1.0]=org.xmlBlaster.client.protocol.soap.SoapCallbackServer
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Adjust if you want to use the EMAIL plugin.
# See xmlBlaster/demo/javaclients/email/README
EmailDriver.smtpHost=localhost
EmailDriver.from=xmlblast at localhost
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Customize dispatcher plugin
# SEE: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/dispatch.plugin.html
DispatchPlugin[Priority][1.0]=org.xmlBlaster.util.dispatch.plugins.prio.PriorizedDispatchPlugin
#DispatchPlugin/defaultPlugin=Priority,1.0
dispatch/connection/DispatchPlugin/defaultPlugin=undef
dispatch/callback/DispatchPlugin/defaultPlugin=undef
#DispatchPlugin/defaultPlugin=undef


#dispatch/callback/DispatchPlugin/defaultPlugin=Priority,1.0
#dispatch/callback/DispatchPlugin/defaultPlugin=undef

# SEE: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/dispatch.plugin.priorizedDispatch.html
PriorizedDispatchPlugin/config=<msgDispatch defaultStatus='64k' defaultAction='send'> \
   <onStatus oid='_bandwidth.status' content='64k' defaultAction='destroy'> \
     <action do='send'  ifPriority='7-9'/> \
     <action do='queue'  ifPriority='2-6'/> \
  </onStatus> \
   <onStatus oid='_bandwidth.status' content='2M'> \
     <action do='send'  ifPriority='0-9'/> \
   </onStatus> \
 </msgDispatch>

#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# MsgDistributor Plugin configuration
#
MsgDistributorPlugin[ConsumableQueue][1.0]=org.xmlBlaster.engine.distributor.plugins.ConsumableQueuePlugin

MsgDistributorPlugin/defaultPlugin=undef,1.0
#MsgDistributorPlugin/defaultPlugin=ConsumableQueue,1.0

#------------------------------------------------------------------------------
# Server side plugins to store single messages persistently 'msgUnitStore'
# Server side setup to recover topics after a server crash 'topicStore'

# Settings for the persistence plugins (StoragePlugin and QueuePlugin) for FIREBIRD
#
JdbcStorage[firebird]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
                      url=jdbc:firebirdsql:localhost/3050:c:/Firebird/Data/mydb.fdb,\
                      user=<YOUR USER HERE>,\
                      password=<YOUR PASSWORD HERE>,\
                      connectionPoolSize=1,\
                      connectionBusyTimeout=90000,\
                      maxWaitingThreads=300,\
                      tableNamePrefix=XB_,\
                      entriesTableName=ENTRIES,\
                      dbAdmin=true

# Settings for the persistence plugins (StoragePlugin and QueuePlugin) for POSTGRES
#
#JdbcStorage[postgres]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
#                      url=jdbc:postgresql://localhost:5432/test,\
#                      user=postgres,\
#                      password=,\
#                      connectionPoolSize=1,\
#                      connectionBusyTimeout=90000,\
#                      maxWaitingThreads=300,\
#                      tableNamePrefix=XB_,\
#                      entriesTableName=ENTRIES,\
#                      dbAdmin=true

# Settings for the persistence plugins (StoragePlugin and QueuePlugin) for ORACLE
#
#JdbcStorage[Oracle]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
#                    url=jdbc:oracle:thin: at localhost:1521:xmlb,\
#                    user=xmlblaster,\
#                    password=secret,\
#                    connectionPoolSize=1,\
#                    connectionBusyTimeout=90000,\
#                    maxWaitingThreads=300,\
#                    tableNamePrefix=XB_,\
#                    entriesTableName=ENTRIES,\
#                    dbAdmin=true

# Settings for the persistence plugins (StoragePlugin and QueuePlugin)
# for Microsoft SQL server:
#JdbcStorage[MicrosoftSQLServer]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
#                  url=jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;DatabaseName=xmlBlaster,\
#                  user=sa,\
#                  password=,\
#                  connectionPoolSize=5,\
#                  connectionBusyTimeout=90000,\
#                  maxWaitingThreads=300,\
#                  tableNamePrefix=XB_,\
#                  entriesTableName=ENTRIES,\
#                  colNamePrefix=XB_,\
#                  dbAdmin=true

# for HSQLDB (the default embedded database)
# DB is created in users home tmp directory, e.g. "/home/joe/tmp/xmlBlaster_192_168_1_4_3412.*"
# The term "$_{xmlBlaster_uniqueId}" is replaced by JdbcConnectionPool.java to a unique ID
# for every server or client instance if not given explicitly.
#JdbcStorage[HSQLDatabaseEngine]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
#                  url=jdbc:hsqldb:${user.home}${file.separator}tmp${file.separator}$_{xmlBlaster_uniqueId},\
#                  user=sa,\
#                  password=,\
#                  connectionPoolSize=1,\
#                  connectionBusyTimeout=90000,\
#                  maxWaitingThreads=300,\
#                  tableNamePrefix=XB_,\
#                  entriesTableName=ENTRIES,\
#                  dbAdmin=true

#JdbcStorage[ldbc]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
#                    url=jdbc:ldbc:postgresql://localhost/test,\
#                    user=postgres,\
#                    password=,\
 #                   connectionPoolSize=1,\
#                    connectionBusyTimeout=90000,\
#                    maxWaitingThreads=300,\
#                    tableNamePrefix=XB_,\
#                    entriesTableName=ENTRIES,\
#                    dbAdmin=true,\
#                    cascadeDeleteSupported=false,\
#                    nestedBracketsSupported=false,\
#                    configurationIdentifier=ldbc

#SQLite: After extending PreparedStatement.setBinaryStream(),ResultSet.getBinaryStream()
#        with Base64 encoding and setting ping() to return 'true'.
#http://www.ch-werner.de/javasqlite/
# Point to dll or shared library (libsqlite_jni.so and libsqlite.so)
#export LD_LIBRARY_PATH=/opt/sqlite-bin/lib
#SQLite.JDBCDriver
#file:/opt/j2sdk1.4.1/jre/lib/ext/sqlite.jar!/SQLite/JDBCDriver.class  + commons-codec.jar (Base64)
#JdbcStorage[SQLite]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
#                      url=jdbc:sqlite:/${user.home}${file.separator}tmp${file.separator}$_{xmlBlaster_uniqueId}.db,\
##                      user=sqlite,\
 #                     password=,\
#                      connectionPoolSize=1,\
#                      connectionBusyTimeout=90000,\
#                      maxWaitingThreads=300,\
#                      tableNamePrefix=XB_,\
#                      entriesTableName=ENTRIES,\
#                      dbAdmin=true

StoragePlugin[JDBC][1.0]=${JdbcStorage[firebird]}
#StoragePlugin[JDBC][1.0]=${JdbcStorage[HSQLDatabaseEngine]}
#StoragePlugin[JDBC][1.0]=${JdbcStorage[postgres]}
#StoragePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}
#StoragePlugin[JDBC][1.0]=${JdbcStorage[MicrosoftSQLServer]}
#StoragePlugin[JDBC][1.0]=${JdbcStorage[ldbc]}
#StoragePlugin[JDBC][1.0]=${JdbcStorage[SQLite]}
StoragePlugin[RAM][1.0]=org.xmlBlaster.engine.msgstore.ram.MapPlugin
StoragePlugin[CACHE][1.0]=org.xmlBlaster.engine.msgstore.cache.PersistenceCachePlugin,persistentQueue=JDBC,transientQueue=RAM

# Choose the plugins
#persistence/topicStore/defaultPlugin=JDBC,1.0
#persistence/msgUnitStore/defaultPlugin=CACHE,1.0
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Declare existing queue implementation plugins
# SEE: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.queue.html
QueuePlugin[JDBC][1.0]=${JdbcStorage[firebird]}
#QueuePlugin[JDBC][1.0]=${JdbcStorage[HSQLDatabaseEngine]}
#QueuePlugin[JDBC][1.0]=${JdbcStorage[postgres]}
#QueuePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}
#QueuePlugin[JDBC][1.0]=${JdbcStorage[MicrosoftSQLServer]}
#QueuePlugin[JDBC][1.0]=${JdbcStorage[ldbc]}
#QueuePlugin[JDBC][1.0]=${JdbcStorage[SQLite]}

QueuePlugin[RAM][1.0]=org.xmlBlaster.util.queue.ram.RamQueuePlugin
QueuePlugin[CACHE][1.0]=org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin,persistentQueue=JDBC,transientQueue=RAM

# Choose the plugin (each client can overwrite this in its connect/publish QoS)
#queue/subject/defaultPlugin=CACHE,1.0
#queue/history/defaultPlugin=CACHE,1.0
#queue/callback/defaultPlugin=CACHE,1.0
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Customize queue and persistence properties
# SEE: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.message.lifecycle.html

# The property with appended 'Cache' is in RAM, the second property is swap space on harddisk

# How many history messages of same key oid (topic) to hold in xmlBlaster (holds references only)
queue/history/maxEntriesCache = 10
queue/history/maxEntries = ${queue/history/maxEntriesCache}

# How big is a callback queue for each client (holds references only)
queue/callback/maxEntriesCache = 1000
queue/callback/maxEntries = ${queue/callback/maxEntriesCache}

# How big is the topic cache for messages of same oid (here your message content occupies the memory)
persistence/msgUnitStore/maxEntriesCache = 10000
persistence/msgUnitStore/maxEntries = 100000000
persistence/msgUnitStore/maxBytesCache = 2097152
persistence/msgUnitStore/maxBytes = 2147483647

# Tail back queue on client side (contains the real data of all message types)
queue/connection/maxEntriesCache = 1000
queue/connection/maxEntries = 10000000
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# List of all jdbc drivers to initalize for the XmlDBAdapter and for the jdbc peristence queue
# Don't forget to add the corresponding jdbc jar file to your CLASSPATH as well.
# SEE: http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.service.rdbms.html
JdbcDriver.drivers=org.hsqldb.jdbcDriver:\
                   org.ldbc.jdbc.jdbcDriver:\
                   org.firebirdsql.jdbc.FBDriver

# Now you can configure your database access.

JdbcDriver.mapping[HSQLDatabaseEngine]=string=VARCHAR,longint=BIGINT,int=INTEGER,blob=BINARY,boolean=CHAR
JdbcDriver.mapping[firebird]=string=VARCHAR(128),longint=decimal(18,0),int=integer,blob=varchar(32000),blobVarName=msg,boolean=CHAR(1)
JdbcDriver.mapping[ldbc]=string=varchar(128),"longint=decimal(19,0)",int=int,boolean=char(1),blob=blob,blobVarName=ablob,keyAttr=not null

#------------------------------------------------------------------------------
# Add here your MIME based plugins which allow to filter messages you
# subscribed with subscribe() or access with get() with your own supplied rules.
# SEE: http://www.xmlblaster.org/xmlBlaster/doc/requirements/mime.plugin.accessfilter.html
MimeAccessPlugin[ContentLenFilter][1.0]=org.xmlBlaster.engine.mime.demo.ContentLenFilter
MimeAccessPlugin[GnuRegexFilter][1.0]=org.xmlBlaster.engine.mime.regex.GnuRegexFilter
MimeAccessPlugin[XPathFilter][1.0]=org.xmlBlaster.engine.mime.xpath.XPathFilter
MimeAccessPlugin[Sql92Filter][1.0]=org.xmlBlaster.engine.mime.sql92.Sql92Filter
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Add here your MIME based plugins which allow to filter published messages.
# SEE: http://www.xmlblaster.org/xmlBlaster/doc/requirements/mime.plugin.publishfilter.html
# MimePublishPlugin[PublishLenChecker][1.0]=org.xmlBlaster.engine.mime.demo.PublishLenChecker,DEFAULT_MAX_LEN=200
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Customize clustering
# SEE: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/cluster.html
LoadBalancerPlugin[RoundRobin][1.0]=org.xmlBlaster.engine.cluster.simpledomain.RoundRobin
MapMsgToMasterPlugin[DomainToMaster][1.0]=org.xmlBlaster.engine.cluster.simpledomain.DomainToMaster,DEFAULT_DOMAIN=dummy
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Telnet access to xmlBlaster for administration
# SEE: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/admin.telnet.html
#admin.remoteconsole.port=2702
#admin.remoteconsole.sessionTimeout=600000
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Switch off internal messages, events sent on client login and logout
# SEE: http://www.xmlBlaster.org/xmlBlaster/doc/requirements/engine.LoginLogoutEvent.html
#loginEvent=false
#logoutEvent=false
#userListEvent=false
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Pluggable Loggers (console,file,log4j,jdk14logging)
# http://www.xmlblaster.org/xmlBlaster/doc/requirements/util.log.plugin.html
LoggableDevicePlugin[console][1.0]=org.xmlBlaster.util.log.ConsoleLogDeviceFactory
LoggableDevicePlugin[jdk14logging][1.0]=org.xmlBlaster.util.log.LogJdkDeviceFactory
LoggableDevicePlugin[log4j][1.0]=org.xmlBlaster.util.log.Log4jDeviceFactory
LoggableDevicePlugin[file][1.0]=org.xmlBlaster.util.log.FileLogDeviceFactory,logFile=mylogfile
# Control wich logger to use globaly, comma separated list
logDevice=console
#logDevice=console,file
#logDevice=jdk14logging
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# When an XmlBlasterException is thrown, how to format the getMessage() string, see:
# http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.errorcodes.html
XmlBlasterException.logFormat=XmlBlasterException errorCode=[{0}] serverSideException={3} location=[{2}] message=[{4} : {8}] [See URL {9}]

# Control logging output format (examples are provided below)
# <timestamp>:<levelStr>:<instance>:<text>
#
# Apr 29, 2000 4:43:35 PM:INFO :Main:Published AuthServer IOR on bootstrapPort 3412
LogFormat=[{0} {1} {4} {2}] {3}
#LogFormat={0}:{1}:{2}:{3}
#
# Apr 29, 2000 5:36:21 PM INFO  Published AuthServer IOR on bootstrapPort 3412
#LogFormat={0} {1} {3}
#
# INFO :Published AuthServer IOR on bootstrapPort 3412
#LogFormat={1}:{3}
#
# Published AuthServer IOR on bootstrapPort 3412
#LogFormat={3}
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# How to format Date and Time in logging output
#
# Choose one of SHORT, MEDIUM, LONG, FULL
#   SHORT is completely numeric, such as 12.13.52 or 3:30pm
#   MEDIUM is longer, such as Jan 12, 1952
#   LONG is longer, such as January 12, 1952 or 3:30:32pm
#   FULL is pretty completely specified, such as Tuesday, April 12, 1952 AD or 3:30:42pm PST.
LogFormat.Date=MEDIUM
LogFormat.Time=MEDIUM

# Choose language - lowercase two-letter ISO-639 code.
# Choose country - uppercase two-letter ISO-3166 code
# Defaults to local computer setting
#LogFormat.Language=en
#LogFormat.Country=US

#LogFormat.Language=fr
#LogFormat.Country=FR

#LogFormat.Language=de
#LogFormat.Country=DE
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
#
# JAXP parsers. Currently only crimson is actually possible to use.
#
javax.xml.parsers.SAXParserFactory=org.apache.crimson.jaxp.SAXParserFactoryImpl
javax.xml.parsers.DocumentBuilderFactory=org.apache.crimson.jaxp.DocumentBuilderFactoryImpl
#------------------------------------------------------------------------------


#------------------------------------------------------------------------------
# Any other custom properties can be added here.
# These are available through the API e.g.
# String str = Global.instance().getProperty().get("MyApp.mykey", "defaultValue");
#------------------------------------------------------------------------------