Ok, I've found the problem. I was using cxf (version 2.5.0) like an imported Project with its MANIFEST.MF file. In the MANIFEST.MF I have added, under the "DynamicImport-Package: ...." section, the packages containing the classes that generated the exception "NoClassDefFoundError " during the loading. Now it seems to be all right. Thanks a lot for the support.
Andrea Date: Wed, 8 May 2013 02:56:02 -0700 From: [email protected] To: [email protected] Subject: Re: java.lang.NoClassDefFoundError exception loading a rest endPoint in particular condition On 08/05/13 10:18, eanbiso wrote: > Thanks for the reply. > What I've seen in last test is that moving the GenCmdDescr class in the same > package with IModel interface the exception doesn't occurs anymore. > But I am not clear what can be the reason: also the other package was visible > and loading the ws as soap there aren't problems; only when loading the ws as > rest the exception occurs, even if during the publication seems to be all > right. > Any idea? Not really, may be you need to use cglib-nodep... Something is being affected at the code generation level... Sergey > Thanks, > > Andrea > > > Date: Wed, 8 May 2013 02:07:59 -0700 > From: [hidden email] > To: [hidden email] > Subject: Re: java.lang.NoClassDefFoundError exception loading a rest endPoint > in particular condition > > > > I've done a quick local test: > > > @Test > > public void testProxy() throws Exception { > > IModel model = > > JAXRSClientFactory.create("http://localhost:8080", IModel.class); > > assertNotNull(model); > > model.getJsonGenericCommandDescriptor(new > > GenCmdDescr("description")); > > } > > > This throws HTTP level exception as expected, as no endpoint is > > listening. The proxy is created OK. The only thing I had to remove > > IPublishable from my example as you did not provide any source for it > > > I suspect some of your dependencies affecting the proxy generation. > > > Cheers, Sergey > > > On 08/05/13 07:16, eanbiso wrote: > >> Good morning, > >> the GenCmdDescr code is a class like this: > >> > >> import javax.xml.bind.annotation.XmlAttribute; > >> import javax.xml.bind.annotation.XmlRootElement; > >> import javax.xml.bind.annotation.XmlAccessorType; > >> import javax.xml.bind.annotation.XmlAccessType; > >> > >> @XmlRootElement(name="GenCmdDescr", namespace="http://***/") > >> @XmlAccessorType(XmlAccessType.FIELD) > >> public class GenCmdDescr { > >> > >> @XmlAttribute private String name; > >> @XmlAttribute private int profileId; > >> @XmlAttribute private int objIdHigh; > >> @XmlAttribute private int objIdLow; > >> @XmlAttribute private short protType; > >> > >> public GenCmdDescr(){}; > >> > >> public GenCmdDescr(String name, short protType, int profileId, int >> objIdHigh, int objIdLow) { > >> super(); > >> this.name = name; > >> this.profileId = profileId; > >> this.objIdHigh = objIdHigh; > >> this.objIdLow = objIdLow; > >> this.protType = protType; > >> } > >> > >> public String getName() { > >> return this.name; > >> } > >> public void setName(String name) { > >> this.name = name; > >> } > >> public int getProfileId() { > >> return profileId; > >> } > >> public void setProfileId(int profileId) { > >> this.profileId = profileId; > >> } > >> public int getObjIdHigh() { > >> return objIdHigh; > >> } > >> public void setObjIdHigh(int objIdHigh) { > >> this.objIdHigh = objIdHigh; > >> } > >> public int getObjIdLow() { > >> return objIdLow; > >> } > >> public void setObjIdLow(int objIdLow) { > >> this.objIdLow = objIdLow; > >> } > >> public short getProtType() { > >> return protType; > >> } > >> public void setProtType(short protType) { > >> this.protType = protType; > >> } > >> } > >> > >> while the ws interface is similar to this (I have reported only the method >> with problems): > >> > >> @WebService(targetNamespace = "****") > >> public interface IModel extends IPublishable { > >> > >> @CxfWSAuthorization(group=***, roles={***}) > >> @GET > >> @Consumes({MediaType.APPLICATION_XML}) > >> @Path("/getJsonGenericCommandDescriptor/{genericCommand}") > >> public String getJsonGenericCommandDescriptor( > >> @WebParam(name = "genericCommand") >> @PathParam("genericCommand") GenCmdDescr genericCommand) throws >> InstantiationException; > >> > >> } > >> > >> > >> Andrea > >> > >> Date: Tue, 7 May 2013 09:45:46 -0700 > >> From: [hidden email] > >> To: [hidden email] > >> Subject: Re: java.lang.NoClassDefFoundError exception loading a rest >> endPoint in particular condition > >> > >> > >> > >> Can you give me a favor and attach an interface and GenCmdDescr source > >> > >> to JIRA ? Or nabble ? I'll give it a try > >> > >> > >> Sergey > >> > >> On 07/05/13 17:29, eanbiso wrote: > >> > >>> Thanks for the fast reply. > >> > >>> I do not use a concrete class and when I create the proxyFactory I use the >>> corresponding ws interface class as "clazz" value. > >> > >>> > >> > >>> Andrea > >> > >>> > >> > >>> > >> > >>> > >> > >>> Date: Tue, 7 May 2013 09:01:10 -0700 > >> > >>> From: [hidden email] > >> > >>> To: [hidden email] > >> > >>> Subject: Re: java.lang.NoClassDefFoundError exception loading a rest >>> endPoint in particular condition > >> > >>> > >> > >>> > >> > >>> > >> > >>> 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. > >> > >>> > >> > >>> > >> > >> > > If you reply to this email, your message will be added to the discussion below: http://cxf.547215.n5.nabble.com/java-lang-NoClassDefFoundError-exception-loading-a-rest-endPoint-in-particular-condition-tp5727361p5727421.html To unsubscribe from java.lang.NoClassDefFoundError exception loading a rest endPoint in particular condition, click here. NAML -- View this message in context: http://cxf.547215.n5.nabble.com/java-lang-NoClassDefFoundError-exception-loading-a-rest-endPoint-in-particular-condition-tp5727361p5727422.html Sent from the cxf-user mailing list archive at Nabble.com.
