Then you most likely have a classloading problem: different versions of the
Mapper interface in different classloaders. The easiest solution is to
place your Mapper class in the ode-jbi.jar.
alex
On 8/28/07, Eduardo Burgos <[EMAIL PROTECTED]> wrote:
>
> I see this in OdeLifeCycle.java line 148
>
> try {
> _ode.registerMapper((Mapper) mapperClass.newInstance());
> } catch (Throwable t) {
> String errmsg =
>
> __msgs.msgOdeInitMapperInstantiationFailed(_ode._config.getMessageMapper());
> __log.error(errmsg);
> throw new JBIException(errmsg, t);
> }
>
> it catches an exception there, in the debugger I saw that Throwable t was
> actually a ClassCastException. I tried the class with a public no argument
> constructor, the errors differ a little but it ends up being a
> ClassCastException at the same point too. I know for sure that my class is
> a
> Mapper because it inherits the ServiceMixMapper.
>
>
>
> On 8/28/07, Alex Boisvert <[EMAIL PROTECTED]> wrote:
> >
> > Does your class have a public no-argument constructor? Ode uses
> > Class.newInstance() to create instances of Mapper classes. Also, check
> > your log file again, I think there must be a more specific error message
> > just above/below the error statement you sent.
> >
> > alex
> >
> >
> > On 8/28/07, Eduardo Burgos <[EMAIL PROTECTED]> wrote:
> > >
> > > Is there a way to change the default ServicemixMapper to another class
> > of
> > > your own? It seems that editing ode-jbi.properties wont do much.Iedited
> > > with my own class name and I got this at startup:
> > >
> > > ERROR - ComponentMBeanImpl - Could not start component
> > > javax.jbi.JBIException: Message mapper class "
> > > org.test.ode.CustomOdeServicemixMapper" could not be instantiated!
> > > at org.apache.ode.jbi.OdeLifeCycle.initMappers(
> OdeLifeCycle.java
> > > :153)
> > > at org.apache.ode.jbi.OdeLifeCycle.init(OdeLifeCycle.java:104)
> > > at org.apache.servicemix.jbi.framework.ComponentMBeanImpl.init
> (
> > > ComponentMBeanImpl.java:200)
> > > at
> > org.apache.servicemix.jbi.framework.ComponentMBeanImpl.doStart(
> > > ComponentMBeanImpl.java:286)
> > > at
> org.apache.servicemix.jbi.framework.ComponentMBeanImpl.start(
> > > ComponentMBeanImpl.java:215)
> > > 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.apache.commons.beanutils.MethodUtils.invokeMethod(
> > > MethodUtils.java:216)
> > >
> > >
> > > My class goes as follows:
> > >
> > > public class CustomOdeServicemixMapper extends ServiceMixMapper {
> > >
> > >
> > > @Override
> > > public void toNMS(NormalizedMessage nms, Message odeMsg,
> > > javax.wsdl.Message msgdef, QName fault) throws MessagingException,
> > > MessageTranslationException {
> > >
> > > //Some code here
> > >
> > > super.toNMS(nms, odeMsg, msgdef, fault);
> > > }
> > > }
> > >
> > >
> > >
> > >
> > > Any ideas?
> > >
> > > Thanks in advance,
> > >
> >
>