Could be same problem I hit a while back, a class loader issue. A fix was
put in so you can set the class loader the marshaller uses.
As a temp fix I did:
public class CastorMarshallerWithXMLContext extends CastorMarshaller
{
private String[] packageDescriptors;
public void setPackageDescriptors(String[] packages)
{
this.packageDescriptors = packages;
}
@Override
protected XMLContext createXMLContext(Resource[] arg0, Class arg1) throws
MappingException, IOException, ResolverException
{
XMLContext context = super.createXMLContext(arg0,arg1);
context.getInternalContext().setClassLoader(AcceptQuote.class.getClassLoader
());
if (packageDescriptors != null)
{
context.addPackages(packageDescriptors);
}
return context;
}
}
Note I am using a castor generated class AcceptQuote to set the class
loader.
It's a horrible hack but it works.
Hope it helps,
Paul
-----Original Message-----
From: sric1 [mailto:[email protected]]
Sent: 27 July 2010 21:29
To: [email protected]
Subject: [castor-user] castor generated descriptors with Spring
Hello,
I am using Spring2.5.6 and Castor 1.3.1 for my webservice. I have used
Source generator to generate my java classes from XSD. Everything is working
fine in the local server(WAS on RAD). But when i deploy it on the server, It
is complaining that it cannot find castor generated classes. I am not sure
what is wrong. I am using Maven to manage dependencies from a repository of
jars.
<code>
<bean id="webServiceTemplate"
class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="messageFactory" />
<property name="defaultUri" value="${uri}" />
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="marshaller" />
</bean>
<bean id="marshaller"
class="org.springframework.oxm.castor.CastorMarshaller" />
</code>
Then i wrote a class to extend CastorMarshaller as below. This class adds
the castor generated descriptor package to the XMLContext. But i still get
the same problem. After receiving XML message, when castor tries to convert
it to java object, it throws an exception saying castor generated classes
cannot be found.
<code>
public class CustomCastorMarshaller extends CastorMarshaller {
protected XMLContext createXMLContext(Resource[] mappingLocations,
Class targetClass) throws MappingException,
IOException,
ResolverException {
XMLContext context = new XMLContext();
logger.debug("Adding org.aamc.amspullservice.oxm.castor
package to
XMLContext");
context.addPackages(new String[] {
"org.test.oxm.castor.descriptors" });
if (!ObjectUtils.isEmpty(mappingLocations)) {
Mapping mapping = new Mapping();
for (int i = 0; i < mappingLocations.length; i++) {
mapping.loadMapping(SaxUtils
.createInputSource(mappingLocations[i]));
}
context.addMapping(mapping);
}
if (targetClass != null) {
context.addClass(targetClass);
}
return context;
}
}
</code>
<code>
<bean id="marshaller" class="org.test.CustomCastorMarshaller " />
</code>
Note: i have .castor.cdr file in my castor generated package. Any help would
be greatly appreciated.
--
View this message in context:
http://old.nabble.com/castor-generated-descriptors-with-Spring-tp29280360p29
280360.html
Sent from the Castor - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
__________ NOD32 5318 (20100727) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email