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