I had to make so many changes to an XML file that I enclose it in an attachment, howididit.txt, together with all the other steps I had to take to get it to work. The instructions at http://cwiki.apache.org/GMOxDOC12/daytrader.html are close, but there are many subtle differences between what it says there and what I actually had to do. Thanks for a great app. Rod McLaughlin.
howididit.txt, or, my adventures deploying the DayTrader Reference App. into WebSphere Rod McLaughlin, Omnimedix Institute, a fine August day in the year 2007
First, obtain WebSphere Community Edition from IBM. http://www.ibm.com/developerworks/downloads/ws/wasce/ This involves registering with IBM. You need a user name and password. The password is very secure. For example, it must not contain an exclamation mark. You should end up with a file called wasce_setup-1.1.0.2-unix.bin or something similar. chmod 777 wasce_setup-1.1.0.2-unix.bin sudo ./wasce_setup-1.1.0.2-unix.bin I found this installation went easily on a Mac. Installing the DayTrader EJB reference app was a little harder... export GERONIMO_HOME=/opt/IBM/WebSphere/AppServerCommunityEdition mkdir daytrader-1.2 svn co http://svn.apache.org/repos/asf/geronimo/daytrader/branches/1.2/ daytrader-1.2/ cd daytrader-1.2/ mvn clean install cd /opt/IBM/WebSphere/AppServerCommunityEdition/bin sudo startup.sh cd .../daytrader-1.2 cd bin cd dbscripts/ cd derby [Edit createDerbyDB.sh so it looks like this:] ----------- #!/bin/bash # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. if [ "${JAVA_HOME}" = "" ] then echo "Please define the JAVA_HOME environment variable." exit fi if [ "${GERONIMO_HOME}" = "" ] then echo "Please define the GERONIMO_HOME environment variable." exit fi export DERBY_PATH=${GERONIMO_HOME}/repository/org/apache/derby export CLASSPATH=${DERBY_PATH}/derby/10.1.3-2/derby-10.1.3-2.jar export CLASSPATH=${CLASSPATH}:${DERBY_PATH}/derbynet/10.1.3-2/derbynet-10.1.3-2.jar export CLASSPATH=${CLASSPATH}:${DERBY_PATH}/derbytools/10.1.3-2/derbytools-10.1.3-2.jar export CLASSPATH=${CLASSPATH}:${DERBY_PATH}/derbyclient/10.1.3-2/derbyclient-10.1.3-2.jar echo "Invoking IJ command line tool to create the database and tables...please wait" ${JAVA_HOME}/bin/java -Dij.driver=org.apache.derby.jdbc.ClientDriver -Dij.protocol=jdbc:derby://localhost:1527/ org.apache.derby.tools.ij < Table.ddl # The following command launches the interactive ij command line utility #${JAVA_HOME}/bin/java -Dij.driver=org.apache.derby.jdbc.ClientDriver -Dij.protocol=jdbc:derby://localhost:1527/ org.apache.derby.tools.ij echo "Table creation complete" ----------- createDerbyDB.sh [http://cwiki.apache.org/GMOxDOC12/daytrader.html says "Edit the daytrader-1.2-beta-plan.xml deployment plan located in the <daytrader_home>\plans directory and replace ge-activemq-rar/1.2-beta/rar with ge-activemq-rar/1.2/rar". This is not quite correct, and there are many other changes you have to make. In fact, it is easier just to show you the whole file rather than describe them all. You have to edit file .../daytrader-1.2/plans/daytrader-1.2-beta-plan.xml so it looks like this, otherwise the deployment step (see bottom of this file below) won't work:] -------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <application xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-1.1"> <dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1"> <dep:moduleId> <dep:groupId>geronimo</dep:groupId> <dep:artifactId>daytrader</dep:artifactId> <dep:version>1.2-SNAPSHOT</dep:version> <dep:type>car</dep:type> </dep:moduleId> <dep:dependencies> <!-- <dep:dependency> <dep:groupId>org.apache.geronimo.configs</dep:groupId> <dep:artifactId>system-database</dep:artifactId> <dep:type>car</dep:type> </dep:dependency> <dep:dependency> <dep:groupId>org.apache.geronimo.configs</dep:groupId> <dep:artifactId>j2ee-corba-yoko</dep:artifactId> <dep:type>car</dep:type> </dep:dependency> --> </dep:dependencies> <dep:hidden-classes /> <dep:non-overridable-classes /> </dep:environment> <module> <web>web.war</web> <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"> <service-ref> <service-ref-name>service/Trade</service-ref-name> <port> <port-name>TradeWSServices</port-name> <protocol>http</protocol> <host>localhost</host> <port>8080</port> <uri>/daytrader/services/TradeWSServices</uri> </port> </service-ref> </web-app> </module> <!----> <module> <ejb>dt-ejb.jar</ejb> <!--Note this must match the--> <openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"> <!----> <cmp-connection-factory> <resource-link>jdbc/TradeDataSource</resource-link> </cmp-connection-factory> <!--<ejb-ql-compiler-factory>com.tranql.sql.ejbcompiler.DB2EJBQLCompilerFactory</ejb-ql-compiler-factory>--> <!--<db-syntax-factory>com.tranql.sql.db2.DB2DBSyntaxFactory</db-syntax-factory>--> <enterprise-beans> <session> <ejb-name>TradeEJB</ejb-name> <jndi-name>ejb/TradeEJB</jndi-name> </session> <session> <ejb-name>TradeJDBC</ejb-name> <jndi-name>ejb/TradeJDBC</jndi-name> </session> <session> <ejb-name>KeySequenceEJB</ejb-name> <jndi-name>ejb/KeySequenceEJB</jndi-name> </session> <!----> <entity> <ejb-name>HoldingEJB</ejb-name> <table-name>HOLDINGEJB</table-name> <cmp-field-mapping> <cmp-field-name>purchasePrice</cmp-field-name> <table-column>purchasePrice</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>holdingID</cmp-field-name> <table-column>holdingID</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>quantity</cmp-field-name> <table-column>quantity</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>purchaseDate</cmp-field-name> <table-column>purchaseDate</table-column> </cmp-field-mapping> </entity> <!----> <entity> <ejb-name>AccountProfileEJB</ejb-name> <table-name>AccountProfileEJB</table-name> <cmp-field-mapping> <cmp-field-name>address</cmp-field-name> <table-column>address</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>passwd</cmp-field-name> <table-column>passwd</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>userID</cmp-field-name> <table-column>userID</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>email</cmp-field-name> <table-column>email</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>creditCard</cmp-field-name> <table-column>creditCard</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>fullName</cmp-field-name> <table-column>fullName</table-column> </cmp-field-mapping> </entity> <!----> <entity> <ejb-name>QuoteEJB</ejb-name> <table-name>QuoteEJB</table-name> <cmp-field-mapping> <cmp-field-name>low</cmp-field-name> <table-column>low</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>open</cmp-field-name> <table-column>open1</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>volume</cmp-field-name> <table-column>volume</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>price</cmp-field-name> <table-column>price</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>high</cmp-field-name> <table-column>high</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>companyName</cmp-field-name> <table-column>companyName</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>symbol</cmp-field-name> <table-column>symbol</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>change</cmp-field-name> <table-column>change1</table-column> </cmp-field-mapping> </entity> <!----> <entity> <ejb-name>KeyGenEJB</ejb-name> <table-name>KeyGenEJB</table-name> <cmp-field-mapping> <cmp-field-name>keyVal</cmp-field-name> <table-column>keyVal</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>keyName</cmp-field-name> <table-column>keyName</table-column> </cmp-field-mapping> </entity> <!----> <entity> <ejb-name>AccountEJB</ejb-name> <table-name>AccountEJB</table-name> <cmp-field-mapping> <cmp-field-name>creationDate</cmp-field-name> <table-column>creationDate</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>openBalance</cmp-field-name> <table-column>openBalance</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>logoutCount</cmp-field-name> <table-column>logoutCount</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>balance</cmp-field-name> <table-column>balance</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>accountID</cmp-field-name> <table-column>accountID</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>lastLogin</cmp-field-name> <table-column>lastLogin</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>loginCount</cmp-field-name> <table-column>loginCount</table-column> </cmp-field-mapping> </entity> <!----> <entity> <ejb-name>OrderEJB</ejb-name> <table-name>OrderEJB</table-name> <cmp-field-mapping> <cmp-field-name>orderFee</cmp-field-name> <table-column>orderFee</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>completionDate</cmp-field-name> <table-column>completionDate</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>orderType</cmp-field-name> <table-column>orderType</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>orderStatus</cmp-field-name> <table-column>orderStatus</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>price</cmp-field-name> <table-column>price</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>quantity</cmp-field-name> <table-column>quantity</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>openDate</cmp-field-name> <table-column>openDate</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>orderID</cmp-field-name> <table-column>orderID</table-column> </cmp-field-mapping> </entity> <message-driven> <ejb-name>TradeStreamerMDB</ejb-name> <resource-adapter> <!--<resource-link>TradeJMS</resource-link>--> <resource-link>TradeJMSResources</resource-link> </resource-adapter> <activation-config> <activation-config-property> <activation-config-property-name>destinationType</activation-config-property-name> <activation-config-property-value>javax.jms.Topic</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>destination</activation-config-property-name> <activation-config-property-value>TradeStreamerTopic</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>acknowledgeMode</activation-config-property-name> <activation-config-property-value>Auto-acknowledge</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>SubscriptionDurability</activation-config-property-name> <activation-config-property-value>NonDurable</activation-config-property-value> </activation-config-property> </activation-config> </message-driven> <message-driven> <ejb-name>TradeBrokerMDB</ejb-name> <resource-adapter> <!--<resource-link>TradeJMS</resource-link>--> <resource-link>TradeJMSResources</resource-link> </resource-adapter> <activation-config> <activation-config-property> <activation-config-property-name>destinationType</activation-config-property-name> <activation-config-property-value>javax.jms.Queue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>destination</activation-config-property-name> <activation-config-property-value>TradeBrokerQueue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>acknowledgeMode</activation-config-property-name> <activation-config-property-value>Auto-acknowledge</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>SubscriptionDurability</activation-config-property-name> <activation-config-property-value>NonDurable</activation-config-property-value> </activation-config-property> </activation-config> </message-driven> </enterprise-beans> <!--** ** R e l a t i o n s h i p s D e f i n i t i o n s ** ** ** The following section defines the relationshoips for the entity beans in the application.--> <relationships> <ejb-relation> <ejb-relation-name>Account-Orders</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>AccountEJB</ejb-relationship-role-name> <relationship-role-source> <ejb-name>AccountEJB</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>orders</cmr-field-name> </cmr-field> <role-mapping> <cmr-field-mapping> <key-column>accountID</key-column> <foreign-key-column>account_accountID</foreign-key-column> </cmr-field-mapping> </role-mapping> </ejb-relationship-role> </ejb-relation> <!--** ** A c c o u n t - A c c o u n t P r o f i l e ** ** ** The following section defines the relationships for the entity beans in the application.--> <ejb-relation> <ejb-relation-name>Account-AccountProfile</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>Account-Has-AccountProfile</ejb-relationship-role-name> <relationship-role-source> <ejb-name>AccountEJB</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>profile</cmr-field-name> </cmr-field> <foreign-key-column-on-source /> <role-mapping> <cmr-field-mapping> <key-column>userID</key-column> <foreign-key-column>profile_userID</foreign-key-column> </cmr-field-mapping> </role-mapping> </ejb-relationship-role> </ejb-relation> <!--** ** A c c o u n t - H o l d i n g s ** ** **--> <ejb-relation> <ejb-relation-name>Account-Holdings</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>AccountEJB</ejb-relationship-role-name> <relationship-role-source> <ejb-name>AccountEJB</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>holdings</cmr-field-name> </cmr-field> <role-mapping> <cmr-field-mapping> <key-column>accountID</key-column> <foreign-key-column>account_accountID</foreign-key-column> </cmr-field-mapping> </role-mapping> </ejb-relationship-role> </ejb-relation> <!--** ** Q u o t e - H o l d i n g s ** ** ** The following section defines the relationships for the entity beans in the application.--> <ejb-relation> <ejb-relation-name>Quote-Holdings</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>Holding-Has-Quote</ejb-relationship-role-name> <relationship-role-source> <ejb-name>HoldingEJB</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>quote</cmr-field-name> </cmr-field> <foreign-key-column-on-source /> <role-mapping> <cmr-field-mapping> <key-column>symbol</key-column> <foreign-key-column>quote_symbol</foreign-key-column> </cmr-field-mapping> </role-mapping> </ejb-relationship-role> </ejb-relation> <!--** ** Q u o t e - O r d e r s ** ** ** The following section defines the relationships for the entity beans in the application.--> <ejb-relation> <ejb-relation-name>Quote-Orders</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>Order-Has-Quote</ejb-relationship-role-name> <relationship-role-source> <ejb-name>OrderEJB</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>quote</cmr-field-name> </cmr-field> <foreign-key-column-on-source /> <role-mapping> <cmr-field-mapping> <key-column>symbol</key-column> <foreign-key-column>quote_symbol</foreign-key-column> </cmr-field-mapping> </role-mapping> </ejb-relationship-role> </ejb-relation> <!--** ** O r d e r - H o l d i n g ** ** ** The following section defines the relationships for the entity beans in the application.--> <ejb-relation> <ejb-relation-name>Order-Holding</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>Order-Has-Holding</ejb-relationship-role-name> <relationship-role-source> <ejb-name>OrderEJB</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>holding</cmr-field-name> </cmr-field> <foreign-key-column-on-source /> <role-mapping> <cmr-field-mapping> <key-column>holdingID</key-column> <foreign-key-column>holding_holdingID</foreign-key-column> </cmr-field-mapping> </role-mapping> </ejb-relationship-role> </ejb-relation> </relationships> </openejb-jar> </module> <module> <java>streamer.jar</java> <application-client xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-client-1.1"> <client-environment xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1"> <moduleId> <groupId>geronimo</groupId> <artifactId>daytrader-streamer-client</artifactId> <version>1.2-SNAPSHOT</version> <type>car</type> </moduleId> </client-environment> <server-environment xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1"> <moduleId> <groupId>geronimo</groupId> <artifactId>daytrader-streamer-client-server</artifactId> <version>1.2-SNAPSHOT</version> <type>car</type> </moduleId> </server-environment> <resource> <external-rar>geronimo/ge-activemq-rar/1.1.1/rar</external-rar> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.1"> <resourceadapter> <resourceadapter-instance> <resourceadapter-name>ActiveMQ RA</resourceadapter-name> <config-property-setting name="ServerUrl">tcp://localhost:61616</config-property-setting> <config-property-setting name="UserName">geronimo</config-property-setting> <config-property-setting name="Password">geronimo</config-property-setting> <workmanager> <gbean-link>DefaultWorkManager</gbean-link> </workmanager> </resourceadapter-instance> <outbound-resourceadapter> <connection-definition> <connectionfactory-interface>javax.jms.ConnectionFactory</connectionfactory-interface> <connectiondefinition-instance> <name>jms/TopicConnectionFactory</name> <implemented-interface>javax.jms.QueueConnectionFactory</implemented-interface> <implemented-interface>javax.jms.TopicConnectionFactory</implemented-interface> <connectionmanager> <xa-transaction> <transaction-caching /> </xa-transaction> <single-pool> <max-size>10</max-size> <blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds> <match-one /> </single-pool> </connectionmanager> </connectiondefinition-instance> </connection-definition> </outbound-resourceadapter> </resourceadapter> <adminobject> <adminobject-interface>javax.jms.Topic</adminobject-interface> <adminobject-class>org.activemq.message.ActiveMQTopic</adminobject-class> <adminobject-instance> <message-destination-name>TradeStreamerTopic</message-destination-name> <config-property-setting name="PhysicalName">TradeStreamerTopic</config-property-setting> </adminobject-instance> </adminobject> </connector> </resource> </application-client> </module> <module> <java>wsappclient.jar</java> <application-client xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-client-1.1"> <client-environment xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1"> <moduleId> <groupId>geronimo</groupId> <artifactId>daytrader-wsapp-client</artifactId> <version>1.2-SNAPSHOT</version> <type>car</type> </moduleId> </client-environment> <server-environment xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1"> <moduleId> <groupId>geronimo</groupId> <artifactId>daytrader-wsapp-client-server</artifactId> <version>1.2-SNAPSHOT</version> <type>car</type> </moduleId> </server-environment> </application-client> </module> <ext-module> <connector>TradeDataSource</connector> <external-path>tranql/tranql-connector-derby-embed-xa/1.1/rar</external-path> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.1"> <resourceadapter> <outbound-resourceadapter> <connection-definition> <connectionfactory-interface>javax.sql.DataSource</connectionfactory-interface> <connectiondefinition-instance> <name>jdbc/TradeDataSource</name> <config-property-setting name="UserName" /> <config-property-setting name="Password" /> <config-property-setting name="DatabaseName">DaytraderDatabase</config-property-setting> <config-property-setting name="CreateDatabase">true</config-property-setting> <connectionmanager> <xa-transaction> <transaction-caching /> </xa-transaction> <single-pool> <max-size>30</max-size> <min-size>0</min-size> <blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds> <idle-timeout-minutes>30</idle-timeout-minutes> <match-one /> </single-pool> </connectionmanager> </connectiondefinition-instance> </connection-definition> </outbound-resourceadapter> </resourceadapter> </connector> </ext-module> <ext-module> <connector>TradeJMS</connector> <external-path>geronimo/ge-activemq-rar/1.1.1/rar</external-path> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.1"> <resourceadapter> <!--how to connect to the JMS Server--> <resourceadapter-instance> <resourceadapter-name>TradeJMSResources</resourceadapter-name> <config-property-setting name="ServerUrl">tcp://localhost:61616</config-property-setting> <config-property-setting name="UserName">not needed</config-property-setting> <config-property-setting name="Password">not needed</config-property-setting> <workmanager> <gbean-link>DefaultWorkManager</gbean-link> </workmanager> </resourceadapter-instance> <!--defines a ConnectionFactory--> <outbound-resourceadapter> <connection-definition> <connectionfactory-interface>javax.jms.ConnectionFactory</connectionfactory-interface> <connectiondefinition-instance> <name>jms/QueueConnectionFactory</name> <implemented-interface>javax.jms.QueueConnectionFactory</implemented-interface> <connectionmanager> <xa-transaction> <transaction-caching /> </xa-transaction> <single-pool> <max-size>10</max-size> <min-size>0</min-size> <blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds> <idle-timeout-minutes>0</idle-timeout-minutes> <match-one /> </single-pool> </connectionmanager> </connectiondefinition-instance> </connection-definition> <connection-definition> <connectionfactory-interface>javax.jms.ConnectionFactory</connectionfactory-interface> <connectiondefinition-instance> <name>jms/TopicConnectionFactory</name> <implemented-interface>javax.jms.TopicConnectionFactory</implemented-interface> <connectionmanager> <xa-transaction> <transaction-caching /> </xa-transaction> <single-pool> <max-size>10</max-size> <min-size>0</min-size> <blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds> <idle-timeout-minutes>0</idle-timeout-minutes> <match-one /> </single-pool> </connectionmanager> </connectiondefinition-instance> </connection-definition> </outbound-resourceadapter> </resourceadapter> <adminobject> <adminobject-interface>javax.jms.Topic</adminobject-interface> <adminobject-class>org.activemq.message.ActiveMQTopic</adminobject-class> <adminobject-instance> <message-destination-name>TradeStreamerTopic</message-destination-name> <config-property-setting name="PhysicalName">TradeStreamerTopic</config-property-setting> </adminobject-instance> </adminobject> <adminobject> <adminobject-interface>javax.jms.Queue</adminobject-interface> <adminobject-class>org.activemq.message.ActiveMQQueue</adminobject-class> <adminobject-instance> <message-destination-name>TradeBrokerQueue</message-destination-name> <config-property-setting name="PhysicalName">TradeBrokerQueue</config-property-setting> </adminobject-instance> </adminobject> </connector> </ext-module> </application> -------------- cd $GERONIMO_HOME/bin deploy.sh --user system --password manager deploy .../daytrader-1.2/modules/ear/target/daytrader-ear-1.2-SNAPSHOT.ear .../daytrader-1.2/plans/daytrader-1.2-beta-plan.xml Then point your favorite browser at http://localhost:8080/daytrader/ click on 'Configuration', and away you go. Happy trading!