I would like to create a WS using JMS transport in a Spring
2.0.2environment. I have followed the example in the User Guide but I
get an
exception when reading the services.xml file. The XML tag <xfire> is not
understood by Spring. Below is the exception:


org.springframework.beans.factory.BeanDefinitionStoreException: Line 9 in
XML document from class path resource [META-INF/xfire/services.xml] is
invalid; nested exception is org.xml.sax.SAXParseException:
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration
can be found for element 'xfire'.
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The
matching wildcard is strict, but no declaration can be found for element
'xfire'.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at 
org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown
Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown
Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown
Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(
DefaultDocumentLoader.java:77)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions
(XmlBeanDefinitionReader.java:405)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions
(XmlBeanDefinitionReader.java:357)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions
(XmlBeanDefinitionReader.java:334)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions
(AbstractBeanDefinitionReader.java:126)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions
(AbstractBeanDefinitionReader.java:142)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions
(AbstractBeanDefinitionReader.java:168)
at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions
(AbstractXmlApplicationContext.java:113)
at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions
(AbstractXmlApplicationContext.java:79)
at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory
(AbstractRefreshableApplicationContext.java:94)
at org.springframework.context.support.AbstractApplicationContext.refresh(
AbstractApplicationContext.java:292)
at org.springframework.context.support.ClassPathXmlApplicationContext
.<init>(ClassPathXmlApplicationContext.java:92)
at org.springframework.context.support.ClassPathXmlApplicationContext
.<init>(ClassPathXmlApplicationContext.java:77)
at com.mach.fcmoon.batch.xfiretest.jms.DataLoadJmsTest.createContext(
DataLoadJmsTest.java:21)
at org.codehaus.xfire.spring.AbstractXFireSpringTest.setUp(
AbstractXFireSpringTest.java:22)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(
JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
RemoteTestRunner.java:196)



The exception refers to this services.xml:

1<?xml version="1.0" encoding="UTF-8"?>
2
3<beans 
xmlns="http://www.springframework.org/schema/beans";<http://www.springframework.org/schema/beans%22>
;
4      
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";<http://www.w3.org/2001/XMLSchema-instance%22>;

5    xsi:schemaLocation="http://www.springframework.org/schema/beans
6
http://www.springframework.org/schema/beans/spring-beans.xsd";<http://www.springframework.org/schema/beans/spring-beans.xsd%22>
;>
7
8
9<xfire 
xmlns="http://xfire.codehaus.org/config/1.0";<http://xfire.codehaus.org/config/1.0%22>
;>
 <transports>
  <bean id="jmsTransport"
     class="org.codehaus.xfire.transport.jms.JMSTransport"
     
xmlns="http://xbean.org/schemas/spring/1.0";<http://xbean.org/schemas/spring/1.0%22>
;>
   <constructor-arg ref="xfire"/>
   <constructor-arg ref="jmsConnectionFactory"/>
  </bean>
 </transports>
</xfire>

 <service 
xmlns="http://xfire.codehaus.org/config/1.0";<http://xfire.codehaus.org/config/1.0%22>
;>
   <serviceClass>com.mach.project.service.IMyService</serviceClass>
   
<wsdlURL>file:/D:/eclipse/workspaces/ws_test/wsdl/me.com.myproject.MyService.Service.wsdl</wsdlURL>
   <serviceFactory>org.codehaus.xfire.jaxb2.JaxbServiceFactory
</serviceFactory>
   <bindings>
    <soap11binding name="e:MyServiceJmsBinding"
transport="urn:xfire:transport:jms">
     <endpoints>
      <endpoint name="e:MyServiceJmsEndPoint" url="jms://MY_QUEUE"/>
     </endpoints>
    </soap11binding>
   </bindings>
 </service>

 <bean id="connectionFactory"
    class="org.apache.activemq.ActiveMQConnectionFactory"
    singleton="true"
    
xmlns="http://xbean.org/schemas/spring/1.0/";<http://xbean.org/schemas/spring/1.0/%22>
;>
  <constructor-arg value="vm://localhost?broker.persistent=false" type="
java.lang.String"/>
 </bean>

</beans>


My test client looks like this:

public class MyServiceJmsTest extends AbstractXFireSpringTest {
@Override
protected ApplicationContext createContext() {
 return new ClassPathXmlApplicationContext(
   new String[] {
     "/META-INF/xfire/services.xml",
     "/org/codehaus/xfire/spring/xfire.xml"
   });
}

public void testClient() throws Exception {
 ObjectServiceFactory sf = new ObjectServiceFactory(getTransportManager());
 sf.addSoap11Transport(JMSTransport.BINDING_ID);

 Service serviceModel = sf.create(IMyService.class);
 XFireProxyFactory pf = new XFireProxyFactory(getXFire());
 IMyService myService = (IMyService) pf.create(serviceModel,
"jms://MY_QUEUE");

 ((XFireProxy) Proxy.getInvocationHandler
(myService)).getClient().setEndpointUri("jms://Peer1");

 String result = myService.execute("A task");
 assertEquals(result, "A task");
}
}



I'm using XFire 1.2.4, Spring 2.0.2 and will hopefully connect to ActiveMQ
4.0.1.

I suspect this is a spring configuration issue, but I wonder if someone here
has perhaps done this before and could help?

Many thanks,

Phil Bowker



____________________________________________________________________________________
Don't get soaked.  Take a quick peak at the forecast
with the Yahoo! Search weather shortcut.
http://tools.search.yahoo.com/shortcuts/#loc_weather

Reply via email to