aspose file tools*
The moose likes Web Services and the fly likes Top-Down approach: WSDL, JAX-WS and JAXB Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Web Services
Bookmark "Top-Down approach: WSDL, JAX-WS and JAXB" Watch "Top-Down approach: WSDL, JAX-WS and JAXB" New topic
Author

Top-Down approach: WSDL, JAX-WS and JAXB

Max Tomlinson
Ranch Hand

Joined: Jul 17, 2001
Posts: 365
Hi all

I am doing my first top down WS implementation using JAX-WS and have a question re: JAXB binding files.

If I generate the artifacts (stubs) from WSDL using a tool (in my case wsconsume under Jboss) do I need to provide JAXB binding files? (I am getting JAXB errors on deployment.) I think that is where the problem lies. The WSDL in question is complex (WSDL supporting OASIS Subscribe-Notify).

If that is the case, is there a basic binding file I can start with?

Thank you

Max
Ivan Krizsan
Ranch Hand

Joined: Oct 04, 2006
Posts: 2198
    
    1
Hi!
I guess you have seen this document on JAXB binding files? http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html
I can show you an example of a JAXB binding file, but I doubt that you will be able to use it as a starting point for your own binding file.


The second example, which actually may be usable as-it-is for you, can be used to resolve name conflicts in a XML schema where one or more elements and attributes have the same name.
This JAXB binding file is to be supplied when creating client artifacts with wsimport, using the -b option.


Finally, you do not NEED to provide a JAXB binding file. The best is to be able to make do without one.
What kind of errors do you get when you deploy? Please provide log or stacktrace.
Best wishes!


My free books and tutorials: http://www.slideshare.net/krizsan
Max Tomlinson
Ranch Hand

Joined: Jul 17, 2001
Posts: 365
Hi Ivan

Thanks for the reply.
Here is what I get: I've posted the erro, my code and the wsdl
note: am using wsconsume (JBoss jax-ws too)l to import the wsdl.
This JAX-WS Java 1.5.
I am trying to implement Notify, an oasis standard for subscription notify.

If I could find a simple wsdl to ws impl sample, that might be a good place to start.

many thanks for looking at this
Max

Here is the error tring to deploy my service:


here is my webservice:


Here is the wsdl

Ivan Krizsan
Ranch Hand

Joined: Oct 04, 2006
Posts: 2198
    
    1
Hi!
There seemed to be a number of errors in your WSDL. I have corrected the ones I found and enclose the new version of the WSDL below.
I have not tried to create client artifacts and deploy - I'll leave it to you to give it a try.

Best wishes!
Max Tomlinson
Ranch Hand

Joined: Jul 17, 2001
Posts: 365
Ivan-

Many thanks for doing this. I was given this wsdl at the company I work at.
we are integrating two systems with two different WS stacks. Theirs is Xfire AXIS2, ours is JBoss JAX-WS Native.
I will run this and let you know how the generate turns out.

thanks again
Max
Max Tomlinson
Ranch Hand

Joined: Jul 17, 2001
Posts: 365

Ivan

Looks like your fixes worked! I haven't tested the service yet but I was able to gen artifacts using wsconcume under JBoss and I can now deploy my Notify WS.

FYI, there was one other fix required to the wsdl:

<soap:fault name="ResourceUnknownFault"> (as opposed to <wsdl:fault...)

I'll test the code next but this is looking good. There is so little documentation available on the JBoss Top Down tools that I wasn't sure if the Top Down process even worked.

thanks again. I had spent over a week on this.

Max

>
Ivan Krizsan
Ranch Hand

Joined: Oct 04, 2006
Posts: 2198
    
    1
Aww, I missed that fault!
Anyway, very good to hear that things worked out!
For situations like this, for you and others, I can recommend two things:
- Validate the WSDL against its XML schema(s).
This can be done in any good IDE (like Eclipse, NetBeans etc) or in special XML editors, like XMLSpy, Oxygen etc.
- Run the WS-I Basic Profile compliance tool, for instance from within soapUI, on the WSDL.
The above two tools catches, if not all, then at least most errors in a WSDL.
Best wishes!
Max Tomlinson
Ranch Hand

Joined: Jul 17, 2001
Posts: 365
As it turns out, this did not fix my problem.

I had a cached simpler version of the service which took a string.

When I got rid of that and tried to deploy my new one, which takes a complex object (a Notify based on the Oasis Spec), I get:

08:50:40,793 ERROR [MainDeployer] Could not start deployment: file:/opt/jboss/jboss-4.2.2.GA/server/default/deploy/cps.ear/cps.jar/
java.lang.IllegalStateException: Cannot build JAXB context
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.createJAXBContext(JAXWSMetaDataBuilder.java:925)
at org.jboss.ws.metadata.builder.jaxws.JAXWSWebServiceMetaDataBuilder.buildWebServiceMetaData(JAXWSWebServiceMetaDataBuilder.java:146)
at org.jboss.ws.metadata.builder.jaxws.JAXWSServerMetaDataBuilder.setupProviderOrWebService(JAXWSServerMetaDataBuilder.java:50)
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderEJB3.buildMetaData(JAXWSMetaDataBuilderEJB3.java:78)
at org.jboss.wsf.stack.jbws.UnifiedMetaDataDeploymentAspect.create(UnifiedMetaDataDeploymentAspect.java:71)
at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:115)
at org.jboss.wsf.container.jboss42.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:97)
at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:90)
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy34.start(Unknown Source)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1015)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy9.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
at $Proxy0.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:417)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy4.start(Unknown Source)
at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)
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.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy5.deploy(Unknown Source)
at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
at org.jboss.Main.boot(Main.java:200)
at org.jboss.Main$1.run(Main.java:508)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
javax.xml.namespace.QName does not have a no-arg default constructor.
this problem is related to the following location:
at javax.xml.namespace.QName
at protected java.util.List org.oasis_open.docs.wsn.b_2.InvalidFilterFaultType.unknownFilter
at org.oasis_open.docs.wsn.b_2.InvalidFilterFaultType
at public org.oasis_open.docs.wsn.b_2.InvalidFilterFaultType org.oasis_open.docs.wsn.b_2.ObjectFactory.createInvalidFilterFaultType()
at org.oasis_open.docs.wsn.b_2.ObjectFactory
at protected java.util.List org.oasis_open.docs.wsn.b_2.TopicExpressionType.content
at org.oasis_open.docs.wsn.b_2.TopicExpressionType
at protected org.oasis_open.docs.wsn.b_2.TopicExpressionType org.oasis_open.docs.wsn.b_2.NotificationMessageHolderType.topic
at org.oasis_open.docs.wsn.b_2.NotificationMessageHolderType
at protected java.util.List org.oasis_open.docs.wsn.b_2.Notify.notificationMessage
at org.oasis_open.docs.wsn.b_2.Notify
at private org.oasis_open.docs.wsn.b_2.Notify com.wwc.cps.webservices.jaxws.Notify.arg0
at com.wwc.cps.webservices.jaxws.Notify
@XmlAttribute/@XmlValue need to reference a Java type that maps to text in XML.
this problem is related to the following location:
at protected java.util.List org.oasis_open.docs.wsn.t_1.TopicType.messageTypes
at org.oasis_open.docs.wsn.t_1.TopicType
at org.oasis_open.docs.wsn.t_1.TopicNamespaceType$Topic
at protected java.util.List org.oasis_open.docs.wsn.t_1.TopicNamespaceType.topic
at org.oasis_open.docs.wsn.t_1.TopicNamespaceType
at public org.oasis_open.docs.wsn.t_1.TopicNamespaceType org.oasis_open.docs.wsn.t_1.ObjectFactory.createTopicNamespaceType()
at org.oasis_open.docs.wsn.t_1.ObjectFactory
at protected java.util.List org.oasis_open.docs.wsn.t_1.TopicSetType.any
at org.oasis_open.docs.wsn.t_1.TopicSetType
at protected org.oasis_open.docs.wsn.t_1.TopicSetType org.oasis_open.docs.wsn.b_2.NotificationProducerRP.topicSet
at org.oasis_open.docs.wsn.b_2.NotificationProducerRP
at public org.oasis_open.docs.wsn.b_2.NotificationProducerRP org.oasis_open.docs.wsn.b_2.ObjectFactory.createNotificationProducerRP()
at org.oasis_open.docs.wsn.b_2.ObjectFactory
at protected java.util.List org.oasis_open.docs.wsn.b_2.TopicExpressionType.content
at org.oasis_open.docs.wsn.b_2.TopicExpressionType
at protected org.oasis_open.docs.wsn.b_2.TopicExpressionType org.oasis_open.docs.wsn.b_2.NotificationMessageHolderType.topic
at org.oasis_open.docs.wsn.b_2.NotificationMessageHolderType
at protected java.util.List org.oasis_open.docs.wsn.b_2.Notify.notificationMessage
at org.oasis_open.docs.wsn.b_2.Notify
at private org.oasis_open.docs.wsn.b_2.Notify com.wwc.cps.webservices.jaxws.Notify.arg0
at com.wwc.cps.webservices.jaxws.Notify

at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:438)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)
at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:105)
at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:116)
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.createJAXBContext(JAXWSMetaDataBuilder.java:921)
... 82 more
08:50:40,798 ERROR [URLDeploymentScanner] Incomplete Deployment listing:

This is obviously related to mapping the object. I am stuck here. Is it due to JAXB bindings?

Max
 
 
subject: Top-Down approach: WSDL, JAX-WS and JAXB