Hi,

You can use CXF over JMS, we support JMS transport in CXF.

There are some JMS spring configuration updates in CXF 2.0, you need to change
<jms:destination id="{
http://services.com/}DummyJMSServiceImplPort.jms-destination";>

to

<jms:destination name="{
http://services.com/}DummyJMSServiceImplPort.jms-destination";> .

It just need to change the 'id' to 'name'. I will update the wiki for it.

BTW,  if you just do not want to use servlet transport , you could remove
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> from the spring configuration file.


Cheers,

Willem.

Juan José Vázquez Delgado wrote:
Hi guys,

I´m trying configure an endpoint to use JMS queues with CXF. The use case is a client that sends a message to an activemq queue. I have a few questions
about this:

1. Should I using CXF over JMS?

I´m not sure if i should using CXF over HTTP, and for example Camel for
routing the message towards the queue, instead.

2. Spring configuration

I have tried to configure an endpoint over JMS with Spring but it doesn´t
work. I used this documentation:

http://cwiki.apache.org/CXF20DOC/jms-transport.html

First of all, if I only use the configuration namespace xmlns:jms="
http://cxf.apache.org/transports/jms"; like this:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   xmlns:jaxws="http://cxf.apache.org/jaxws";
   xmlns:jms="http://cxf.apache.org/transports/jms";
   xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                          http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd";>

   <import resource="classpath:META-INF/cxf/cxf.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-jms.xml"/>


   <jms:destination id="{
http://services.com/}DummyJMSServiceImplPort.jms-destination";>
       <jms:address destinationStyle="queue"
                    jndiConnectionFactoryName="ConnectionFactory"
                    jndiDestinationName="foo.bar">

       <jms:JMSNamingProperty name="java.naming.factory.initial"
                              value="
org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
       <jms:JMSNamingProperty name="java.naming.provider.url"
                              value="tcp://localhost:2212"/>

       </jms:address>
   </jms:destination>

</beans>


i get this error:

The matching wildcard is strict, but no declaration can be found for element
'jms:destination'.

Then i tried to add the schemaLocation like this:

<beans xmlns="http://www.springframework.org/schema/beans";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   xmlns:jaxws="http://cxf.apache.org/jaxws";
   xmlns:jms="http://cxf.apache.org/transports/jms";
   xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                          http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
                          http://cxf.apache.org/transports/jms
http://cxf.apache.org/schemas/configuration/jms.xsd";>

but then i get this error:

org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '{
http://services.com/}DummyJMSServiceImplPort.jms-destination' is not a valid
value for 'NCName'.
   at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException
(ErrorHandlerWrapper.java:236)...

Please, i need help to continue, any ideas?.

Thanks.

Juanjo

Reply via email to