On Sep 24, 2007, at 1:01 PM, David Carew wrote:
Do you have references to the ConnectionFactory and Queue in your
web.xml ? http://cwiki.apache.org/GMOxDOC20/jms-and-mdb-sample-
application.html has an example. Although the example uses
annotations the setup would be the same to be able to access the
JMS resources via JNDI.
On 9/24/07, Jochen Zink <[EMAIL PROTECTED]> wrote:
Hello,
I'm using geronimo 2.0.1 and I try to send a simple textMessage to
a JMSQueue.
First, I have configured a JMS-Ressource for ActiveMQ with the
geronimo console. You can see the full DeploymentPlan at the end of
this email.
The Connectionfactory becomes the name: MyFactory
The Destination becomes the name: MyQueue
Now, I have a simple WebApplication, with a simple Servlet, which
trys to send a message to MyQueue
Here are the relevant code:
InitialContext jndiContext = getInitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory)
jndiContext.lookup("java:comp/env/MyFactory");
Queue queue = (Queue) jndiContext.lookup("java:comp/env/MyQueue");
QueueConnection connection = factory.createQueueConnection();
QueueSession session = connection.createQueueSession(true,
Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(queue);
TextMessage txtMsg = session.createTextMessage();
txtMsg.setText(vorgangPk);
producer.send( txtMsg );
connection.close();
On line 2 jndiContext.lookup("java:comp/env/MyFactory"); a
NameNotFoundException is thrown (MyFactory not found).
I'm not sure what I do wrong. If anyone has an idea, it would be
great.
Thanks a lot
Regards
Jochen
Here is the getInitialContext() Method
Properties env = new Properties();
env.put (Context.INITIAL_CONTEXT_FACTORY,
"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
env.put(Context.PROVIDER_URL, "tcp://localhost:61616");
return new InitialContext(env);
I think this is the problem. This gives you the proprietary non-
javaee activemq jndi context that IIRC you have to configure with a
properties file somewhere. To use the javaee naming stuff you set up
in your plans I think you want just new InitialContext().
The plans look ok to me, the important part is that the amq connector
is listed in the dependencies of the web app: this tells geronimo to
try to hook up the resource-ref etc to it. The names java:comp/env/
MyQueue etc. look correct to me.
thanks
david jencks
geronimo-web.xml
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"
xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1 ">
<dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/
deployment-1.1">
<dep:moduleId>
<dep:groupId> com.accumio.ae</dep:groupId>
<dep:artifactId>EngineServlet</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>car</dep:type>
</dep:moduleId>
<dep:dependencies>
<dependency>
<groupId>console.jms</groupId>
<artifactId>pushae</artifactId>
<version> 1.0</version>
<type>rar</type>
</dependency>
</dep:dependencies>
<dep:hidden-classes/>
<dep:non-overridable-classes/>
</dep:environment>
<context-root>/engineServlet</context-root>
</web-app>
the Deployment Plan for the JMS-Ressource:
<connector xmlns=" http://geronimo.apache.org/xml/ns/j2ee/
connector-1.2">
<dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/
deployment-1.2 ">
<dep:moduleId>
<dep:groupId>console.jms</dep:groupId>
<dep:artifactId>pushae</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>rar</dep:type>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>org.apache.geronimo.configs </
dep:groupId>
<dep:artifactId>activemq-broker</dep:artifactId>
<dep:type>car</dep:type>
</dep:dependency>
</dep:dependencies>
</dep:environment>
<resourceadapter>
<resourceadapter-instance>
<resourceadapter-name>pushae</resourceadapter-name>
<config-property-setting name="Clientid">pushaeClient</
config-property-setting>
<nam:workmanager xmlns:nam="http://geronimo.apache.org/
xml/ns/naming-1.2">
<nam:gbean-link>DefaultWorkManager</nam:gbean-link>
</nam:workmanager>
</resourceadapter-instance>
<outbound-resourceadapter>
<connection-definition>
<connectionfactory-interface>
javax.jms.QueueConnectionFactory</connectionfactory-interface>
<connectiondefinition-instance>
<name>MyFactory</name>
<connectionmanager>
<xa-transaction>
<transaction-caching/>
</xa-transaction>
<single-pool>
<match-one/>
</single-pool>
</connectionmanager>
</connectiondefinition-instance>
</connection-definition>
</outbound-resourceadapter>
</resourceadapter>
<adminobject>
<adminobject-interface>javax.jms.Queue</adminobject-interface>
<adminobject-
class>org.apache.activemq.command.ActiveMQQueue </adminobject-class>
<adminobject-instance>
<message-destination-name>MyQueue</message-destination-
name>
<config-property-setting name="PhysicalName">MyQueue2</
config-property-setting>
</adminobject-instance>
</adminobject>
<adminobject>
<adminobject-interface>javax.jms.Topic</adminobject-interface>
<adminobject-
class>org.apache.activemq.command.ActiveMQTopic </adminobject-class>
</adminobject>
</connector>
Thanks a lot
_____________________________________________________________________
Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
http://smartsurfer.web.de/?mc=100071&distributionid=000000000066