Hello,
how do I configure Xfire in order to use JAXB schema validation.
using JAXB alone I load the Root-Schema and set the Source's SystemID:

private Source getSource(File schemaPath) throws FileNotFoundException {
       SAXSource saxSource = new SAXSource(new InputSource(
               new FileInputStream(schemaPath)));
       saxSource.setSystemId("file:///" + schemaPath.getAbsolutePath());
       System.out.println("systemID: '" + saxSource.getSystemId() + "'");
       return saxSource;
   }

all imported and included schemas are sucsessfully loaded using relative
paths with this setup.

Can  I achieve the same in the Spring configuration - currently I tried:

<bean name="zfzr.server.jaxb"
       class="org.codehaus.xfire.spring.remoting.XFireExporter">
       <property name="serviceBean">
           <bean
               class="de.kba.zfzr.mitteilung.zfzrServiceImpl" />
       </property>

       <property name="serviceClass"
           value="de.kba.zfzr.mitteilung.zfzrServiceImpl" />
       <property name="serviceFactory">
           <ref bean="xfire.jaxbServiceFactory" />
       </property>
       <property name="schemas">
       <list>
           <value>
file:///D:\programme4\workspace\xfire.zfzr\src\main\resources\ZFZR-Mitteilung.xsd
</value>
       </list>
       </property>
       <!-- <property name="wsdlURL" value="bookservice.wsdl" /> -->
   </bean>

but then i get the following exception :

org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested
exception is org.codehaus.xfire.fault.XFireFault: Error creating validating
schema.. Nested exception is org.xml.sax.SAXParseException: src-resolve:
Cannot resolve the name 'zfzr-Mitteilung-0' to a(n) 'type definition'
component.
org.codehaus.xfire.fault.XFireFault: Error creating validating schema..
Nested exception is org.xml.sax.SAXParseException: src-resolve: Cannot
resolve the name 'zfzr-Mitteilung-0' to a(n) 'type definition' component.
   at org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(
Soap11FaultSerializer.java:31)
   at org.codehaus.xfire.fault.SoapFaultSerializer.readMessage(
SoapFaultSerializer.java:28)
   at org.codehaus.xfire.soap.handler.ReadHeadersHandler.checkForFault(
ReadHeadersHandler.java:111)
   at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(
ReadHeadersHandler.java:67)
   at org.codehaus.xfire.handler.HandlerPipeline.invoke(
HandlerPipeline.java:131)
   at org.codehaus.xfire.client.Client.onReceive(Client.java:387)
   at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(
HttpChannel.java:139)
   at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java
:48)
   at org.codehaus.xfire.handler.OutMessageSender.invoke(
OutMessageSender.java:26)
   at org.codehaus.xfire.handler.HandlerPipeline.invoke(
HandlerPipeline.java:131)
   at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:75)
   at org.codehaus.xfire.client.Client.invoke(Client.java:335)
   at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java
:77)
   at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
   at $Proxy21.arbeitsgang0(Unknown Source)
   at de.kba.zfzr.ws.test.AG0Test.checkBookServiceFindBook(AG0Test.java:87)
   at de.kba.zfzr.ws.test.AG0Test.testViaXFireServer(AG0Test.java:75)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.junit.internal.runners.TestMethodRunner.executeMethodBody(
TestMethodRunner.java:99)
   at org.junit.internal.runners.TestMethodRunner.runUnprotected(
TestMethodRunner.java:81)
   at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(
BeforeAndAfterRunner.java:34)
   at org.junit.internal.runners.TestMethodRunner.runMethod(
TestMethodRunner.java:75)
   at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java
:45)
   at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(
TestClassMethodsRunner.java:71)
   at org.junit.internal.runners.TestClassMethodsRunner.run(
TestClassMethodsRunner.java:35)
   at org.junit.internal.runners.TestClassRunner$1.runUnprotected(
TestClassRunner.java:42)
   at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(
BeforeAndAfterRunner.java:34)
   at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java
:52)
   at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(
JUnit4TestReference.java:38)
   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)

this seems to be the same behaviour You get with plain JAXB when You not set
the SystemId...

thanks ralf

Reply via email to