Joel,
What are your maven dependencies? The -exsh true stuff requires the
cxf-rt-bindings-soap dependency to work. Are you also running via the
exec plugin (or jetty:run)? If so, the lack of a couple dependencies
could also cause some problems.
Make sure you have the cxf-rt-frontend-jaxws, cxf-rt-transport-http, and
cxf-rt-bindings-soap. There might be a couple others needed as well.
Possibly cxf-rt-bindings-http as your wsdl has an http binding in it,
not really sure though.
Dan
On Tuesday 13 November 2007, JoCosti wrote:
> Hi Dan,
>
> I'm always happy to be helpful for discovering bug !
>
> Well maybe there is another bug concerning
> cxf-codegen-plugin/wsdl2java maven plugin, adding "-exsh true" option
> to the plugin leads to a NullPointerException when generating code.
> (note that without "-exsh true" there is no NPE).
>
> Here's the plugin configuration section in my pom.xml :
> <plugin>
> <groupId>org.apache.cxf</groupId>
> <artifactId>cxf-codegen-plugin</artifactId>
> <version>${cxf.version}</version>
> <executions>
> <execution>
> <id>generate-sources</id>
> <phase>generate-sources</phase>
> <configuration>
>
> <sourceRoot>${project.build.directory}/generated-sources/</sourceRoot>
> <wsdlOptions>
> <wsdlOption>
>
> <wsdl>${basedir}/src/main/resources/structureservices.wsdl</wsdl>
> <extraargs>
> <extraarg>-client</extraarg>
> <extraarg>-exsh</extraarg>
> <extraarg>true</extraarg>
> </extraargs>
> </wsdlOption>
> </wsdlOptions>
> </configuration>
> <goals>
> <goal>wsdl2java</goal>
> </goals>
> </execution>
> </executions>
> </plugin>
>
> I will try calling directly ant tasks from maven instead of using
> cxf-codegen plugin to see if the problem is in the maven plugin or in
> wsdl2java code.
> I'll keep you informed of my investigation.
>
> Regards,
>
> Joel
>
> dkulp wrote:
> > Joel,
> >
> > Thanks for sending the WSDL. I can confirm this is a CXF problem.
> > It's related to the out of band header. The HolderOutInterceptor
> > is expecting the out of band header to have a part in the parameter
> > list if it's an in/out header, but by default, it wasn't generated.
> > It's a bug in the HolderOutInterceptor.
> >
> > Good news: I have a possible workaround. When you run wsdl2java to
> > generate the code, if you add "-exsh true" to the flags, it will
> > change the method signature to have the header as a third parameter.
> >
> > Dan
> >
> > On Monday 12 November 2007, JoCosti wrote:
> >> Thanks Glenn for the quick and developed answer, I do appreciate a
> >> lot since I'm a newbie concerning web services and particularly
> >> jax-ws.
> >>
> >> Concerning your remarks :
> >>
> >> 1) I think it's doc/literal, here's a part of binding section
> >>
> >> <wsdl:binding name="StructureServicesSoap"
> >> type="tns:StructureServicesSoap">
> >> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
> >> style="document" />
> >> <wsdl:operation name="GetMailAddress">
> >> <soap:operation
> >> soapAction="http://anpe.fr/DirectoryServices/GetMailAddress"
> >> style="document" />
> >> <wsdl:input>
> >> <soap:body use="literal" />
> >> <soap:header
> >> message="tns:GetMailAddressStructureMailAddressHeader"
> >> part="StructureMailAddressHeader"
> >> use="literal" />
> >> </wsdl:input>
> >> <wsdl:output>
> >> <soap:body use="literal" />
> >> <soap:header
> >> message="tns:GetMailAddressStructureMailAddressHeader"
> >> part="StructureMailAddressHeader"
> >> use="literal" />
> >> </wsdl:output>
> >> </wsdl:operation>
> >>
> >> Can you confirm that it should be possible to consume this web
> >> service with a jax-ws client ?
> >> I have uploaded the complete wsdl (hope you can have a look at it,
> >> it's the first time I'm using the upload facility in this mailing
> >> list).
> >>
> >> For 2) I need to have a look at your work, I'm using maven2 to
> >> generate my web service client, I hope I can use your approach with
> >> maven.
> >>
> >> Finally, here's a the code I have written to call the web service :
> >>
> >> the JUnit test part
> >>
> >> public void testGetMailAddress() throws TechniqueException {
> >> String mailStructure =
> >> getStructureServices().getMailAddress(APPLICATION_NOM, "92053");
> >> assertEquals("[EMAIL PROTECTED]", mailStructure);
> >> }
> >>
> >> Where getStructureServices() calls the following code (I've just
> >> put the interesting part for clarity sake)
> >>
> >> // I need to access StructureServices in HTTPS, note sure if it's
> >> the right way but that's what I've found with googling ...
> >> Authenticator.setDefault(new AnpeAuthenticator());
> >> // instanciate the web service client generated by codegen maven
> >> plugin fr.anpe.directoryservices.StructureServices
> >> structureServices = new
> >> fr.anpe.directoryservices.StructureServices();
> >> // get web service port called StructureServicesSoap
> >> structureServicesWebServiceConsumer =
> >> structureServices.getStructureServicesSoap();
> >>
> >> One last thing, in my wsdl, I have the same name
> >> (StructureServicesSoap) for a port and a binding, is that correct ?
> >>
> >> binding section :
> >> <wsdl:binding name="StructureServicesSoap"
> >> type="tns:StructureServicesSoap">
> >> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
> >> style="document" />
> >> <wsdl:operation name="GetInformation">
> >> <soap:operation
> >> soapAction="http://anpe.fr/DirectoryServices/GetInformation"
> >> style="document" />
> >>
> >> port section :
> >> <wsdl:service name="StructureServices">
> >> <wsdl:port name="StructureServicesSoap"
> >> binding="tns:StructureServicesSoap">
> >> <soap:address
> >> location="https://annuairews-int.tempo.anpe.fr/directoryservices/st
> >>ruc tureservices.asmx" />
> >> </type filter textwsdl:port>
> >>
> >> Regards,
> >>
> >> Joel
> >>
> >> Glen Mazza-2 wrote:
> >> > More detective work is needed here:
> >> >
> >> > 1.) Are you using an rpc/encoded web service, instead of doc/lit
> >> > or rpc/lit (Can you show us a part of the wsdl:binding section,
> >> > that's where you can determine that)--if so, that is not
> >> > supported by jax-ws. For rpc/encoded, you'll need to use the
> >> > Dispatch object or SAAJ instead.
> >> >
> >> > An RPC/encoded sample using Dispatch object is here:
> >> > http://www.jroller.com/gmazza/date/20071102
> >> >
> >> > 2.) You may wish to use both Metro and CXF when working with
> >> > SOAP clients, because, depending on whether or not it fails on
> >> > both stacks, that helps pinpoint if the problem is (1) with the
> >> > web service stack or (2) your own code. If (2), frequently
> >> > different error messages are given by the two stacks, which can
> >> > help greatly in troubleshooting the problem with the client code.
> >> >
> >> > The "run-client" target of step 5 here[1] shows how this can be
> >> > done. All that is needed is to switch the <path refid.../>
> >> > between "cxf.classpath" and "metro.classpath" to activate the
> >> > different web service stack. Recompiling is not necessary,
> >> > because JAX-WS artifacts are interoperable between web service
> >> > stacks.
> >> >
> >> > [1] http://www.jroller.com/gmazza/date/20070817
> >> >
> >> > HTH,
> >> > Glen
> >> >
> >> > Am Montag, den 12.11.2007, 04:44 -0800 schrieb JoCosti:
> >> >> Hi there,
> >> >>
> >> >> I'm using 2.0.2 version to generate the client side of an
> >> >> existing web service.
> >> >> I have already managed to write a client with another framework
> >> >> using jax-rpc technology, I nowwant to migrate to jax-ws with
> >> >> CXF framework
> >> >>
> >> >> When running the client web service, I'm facing the following
> >> >> exception :
> >>
> >> http://www.nabble.com/file/p13706890/structureservices.wsdl
> >> structureservices.wsdl
> >
> > --
> > J. Daniel Kulp
> > Principal Engineer
> > IONA
> > P: 781-902-8727 C: 508-380-7194
> > [EMAIL PROTECTED]
> > http://www.dankulp.com/blog
--
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727 C: 508-380-7194
[EMAIL PROTECTED]
http://www.dankulp.com/blog