Hi
On 07/05/13 15:56, eanbiso wrote:
Hi at all,
I have the following problem loading a rest endPoint using cxf.
The operations I do to load the rest endPoint after its publication are the
following:
                        
                        JAXRSClientFactoryBean proxyFactory = new 
JAXRSClientFactoryBean();
                        proxyFactory.setServiceClass(clazz);
                        address += servName;
                        proxyFactory.setAddress(address);
                        proxy = proxyFactory.create();                  
                        .....
                        
The "proxyFactory.create()" operation recall the "createWithValues" method
of JAXRSClientFactoryBean:
                        
                        public Client createWithValues(Object... varValues) {
                        ...
                            actualClient =
(Client)ProxyHelper.getProxy(Thread.currentThread().getContextClassLoader(),
                                 new Class[]{cri.getServiceClass(),
Client.class, InvocationHandlerAware.class},
                                      proxyImpl);
                        ...
                        }

Now I have the following anomalous behavior:
the "getProxy(...)" operation fails when the ws interface contains a method
that wants a "complex" input parameter like this:

        @GET
        @Consumes({MediaType.APPLICATION_XML})
        @Path("/getJsonGenericCommandDescriptor/{genericCommand}")
        public String getJsonGenericCommandDescriptor(
                        @WebParam(name = "genericCommand") 
@PathParam("genericCommand")
GenCmdDescr genericCommand) throws InstantiationException;

If the ws interface contains this method, an exception
"java.lang.NoClassDefFoundError: ___.GenCmdDescr" occurs loading the
endPoint.
If I remove this method from the ws interface the loading operation is right
and no exceptions occurs.
I do not understand why it happens.
In fact in the same ws interface I have another method that returns a
GenCmdDescr and no NoClassDefFoundError exception occurs with this.
The exception seems to occur only if the GenCmdDescr is used like an input
parameters of one of the methods and no excpetions occurs for method that
return an object GenCmdDescr.
Someone can help me?

Do you use a concrete class to create a proxy ? Example, do you use say MyServiceImpl.class where MyServiceImpl is a root resource implementation ?

I can only think at the moment of CGLIB getting confused (which is used to create a proxy when a concrete class like MyServiceImpl is proxified)

Cheers, Sergey

Thanks a lot,

Andrea


NOTE:
1.
The GenCmdDescr object is an object like this:

@XmlRootElement(name="GenCmdDescr", namespace="http://****/";)
@XmlAccessorType(XmlAccessType.FIELD)
public class GenCmdDescr {
        
        @XmlAttribute private String name;
        @XmlAttribute private int a;
        @XmlAttribute private int b;
        @XmlAttribute private int c;
        @XmlAttribute private short d;
        ...
}

2.
I'm using cxf 2.5.0 version



--
View this message in context: 
http://cxf.547215.n5.nabble.com/java-lang-NoClassDefFoundError-exception-loading-a-rest-endPoint-in-particular-condition-tp5727361.html
Sent from the cxf-user mailing list archive at Nabble.com.


--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to