java.lang.LinkageError
limousyf Feb 8, 2008 10:44 AMHello,
I have a weird error trying to use my newly generated WS.
The problem occurs on the client side :
Caused by: java.lang.LinkageError: Class javax/xml/soap/AttachmentPart violates loader constraints at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at $Proxy70.<clinit>(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:588) at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.createProxy(ServiceDelegateImpl.java:331) at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPortInternal(ServiceDelegateImpl.java:211) at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPort(ServiceDelegateImpl.java:148) at javax.xml.ws.Service.getPort(Service.java:116) at authentification.bean.session.AuthentificationService.getAuthentificationPort(AuthentificationService.java:56) at bsa.admin.view.StartBean.login(StartBean.java:114) 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.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132) ... 38 more
This linkage error results in a ClassNotFoundException.
Here is the code of my WebserviceClient:
@WebServiceClient(name = "AuthentificationService", targetNamespace = "http://session.bean.authentification/", wsdlLocation = "http://localhost:8080/AuthentificationService/Authentification?wsdl") public class AuthentificationService extends Service { private final static URL AUTHENTIFICATIONSERVICE_WSDL_LOCATION; static { URL url = null; try { url = new URL("http://localhost:8080/AuthentificationService/Authentification?wsdl"); } catch (MalformedURLException e) { e.printStackTrace(); } AUTHENTIFICATIONSERVICE_WSDL_LOCATION = url; } public AuthentificationService(URL wsdlLocation, QName serviceName) { super(wsdlLocation, serviceName); } public AuthentificationService() { super(AUTHENTIFICATIONSERVICE_WSDL_LOCATION, new QName("http://session.bean.authentification/", "AuthentificationService")); } /** * * @return * returns Authentification */ @WebEndpoint(name = "AuthentificationPort") public Authentification getAuthentificationPort() { return (Authentification)super.getPort(new QName("http://session.bean.authentification/", "AuthentificationPort"), Authentification.class); } }
And now the (supposely) not linked Authentification.class
@WebService(name = "Authentification", targetNamespace = "http://session.bean.authentification/") @SOAPBinding(style = SOAPBinding.Style.RPC) public interface Authentification { /** * * @param arg1 * @param arg0 * @return * returns authentification.bean.session.User */ @WebMethod @WebResult(partName = "return") public User authenticate( @WebParam(name = "arg0", partName = "arg0") String arg0, @WebParam(name = "arg1", partName = "arg1") String arg1); /** * * @param arg1 * @param arg0 * @return * returns net.java.dev.jaxb.array.StringArray */ @WebMethod @WebResult(partName = "return") public StringArray getRoles( @WebParam(name = "arg0", partName = "arg0") int arg0, @WebParam(name = "arg1", partName = "arg1") int arg1); }