OK, i figured out the problem.
CXF generates this:
<xsd:element name="echo" type="tns:echo"/>
<xsd:complexType name="echo">
<xsd:sequence>
<xsd:element minOccurs="0" name="message" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="echoResponse" type="tns:echoResponse"/>
<xsd:complexType name="echoResponse">
<xsd:sequence>
<xsd:element minOccurs="0" name="return" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
which by the way seems odd to me that the complexType name wasn't qualified
with tns, but anyway, InfoPath only accepts
<xsd:element name="echo">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="message"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="echoResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="return" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
When i create a file, and point InfoPath to it, it works. So now i want to get
CXF to return this 'canned' wsdl, as opposed to generating one. So i did this:
@WebService(endpointInterface = "com.primavera.echo.ws.EchoService",
serviceName = "EchoService", wsdlLocation="META-INF/echo.wsdl")
public class EchoServiceImpl implements EchoService {
public String echo(String message) {
return "W00T: " + message;
}
}
and placed the wsdl at META-INF/echo.wsdl. But no luck, CXF just keeps
generating new ones. I've tried /META-INF/echo.wsdl, and
file:///META-INF/echo.wsdl, but nothing i do can get CXF to NOT dynamically
generate the wsdl.
Any ideas?
-----Original Message-----
From: Dave Brosius <[EMAIL PROTECTED]>
Sent: Wednesday, May 14, 2008 1:25pm
To: [email protected]
Subject: Re: Java First problems with Infopath
InfoPath is a basic component in the Microsoft Office suite, and is probably a
very common partner to sharepoint. While i don't argue that probably microsoft
is wacked here, it is most likely one of the biggest players from a penetration
point of view in the market.
I did try what you suggested and that is the message i got.
I'm guessing that this message
http://groups.google.com/group/microsoft.public.infopath/browse_thread/thread/b7af1940f6c0ecc1
is related to the problem i'm having. And thus i have to write my own wsdls
from now on.
So to do this, i just capture the wsdl and save it to a file, modify it and
then add a wsdlLocation attribute to my @WebService, right?
-----Original Message-----
From: Daniel Kulp <[EMAIL PROTECTED]>
Sent: Wednesday, May 14, 2008 12:35pm
To: [email protected]
Subject: Re: Java First problems with Infopath
Not having ever used or even seen InfoPath, I'm not sure how much help
I can be here, but I'll try. (and I don't even have a windows box to
even try.
Even in java first, a contract is available. You can get the wsdl
contract just by browsing to the URL with ?wsdl appended. I guess
I would try downloading that wsdl and pointing InfoPath at it and
seeing what it says.
Dan
On May 13, 2008, at 4:40 PM, Dave Brosius wrote:
> I used the sample echo and generated a java first webservice. When
> accessed by soapUI it works fine. when used from InfoPath, it fails
> with message "InfoPath cannot use the selected Web service method
> for receiving data because the method does not provide valid XML
> data."
>
>
> Am I to understand that one can only use contract first ws?
>
---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog