Following my previous messages, I did try to figure out how the wsdl file is written and among the tests I created a subclass of EOGenericRecord.
The resulting wsdl type declaration shows:

tns1:EOEnterpriseObject
tns3:EOGenericRecord
tns2:MyEOTestObject

But on top of the wsdl file (in the definitions... so I guess that the error 'referred but not defined' was referring to this) I only see two of those:

<wsdl:definitions targetNamespace="http://magG5.local:55557/cgi-bin/ WebObjects/Calculator.woa/ws/Calculator"
                    xmlns="http://schemas.xmlsoap.org/wsdl/";
                    xmlns:apachesoap="http://xml.apache.org/xml-soap";
xmlns:impl="http://magG5.local:55557/cgi-bin/ WebObjects/Calculator.woa/ws/Calculator" xmlns:intf="http://magG5.local:55557/cgi-bin/ WebObjects/Calculator.woa/ws/Calculator" xmlns:soapenc="http://schemas.xmlsoap.org/soap/ encoding/"
                    xmlns:tns2="http://DefaultNamespace";
                    xmlns:tns3="http://eocontrol.webobjects.com";
                    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/ soap/"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema";>

Looks like I miss the xmlns:tns1="http://eocontrol.webobjects.com"; piece of definition. This looks like a bug to me. Is there a workaround to manually add a namespace definition to the WSDL document? Maybe interacting with the AXIS service? Anyone familiar with it?

Kind regards,
Riccardo De Menna


On 18 ott 2005, at 21:22, Riccardo De Menna wrote:
No luck... I did try what pointed out, but the problem does not seem to be in the server's wsdl. I mean... if I remove the test method and build the app, the wsdl lacks the type definition for the EO stuff... in detail:

<schema targetNamespace="http://eocontrol.webobjects.com"; xmlns="http://www.w3.org/2001/XMLSchema";>
    <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
    <complexType name="EOGenericRecord">
        <complexContent>
            <extension base="tns1:EOEnterpriseObject">
                <sequence/>
            </extension>
        </complexContent>
    </complexType>
</schema>

If I compile with the 'test' method this fragment finds it's way inside the wsdl. This is also the only place where actually the EOEnterpriseObject is referred as I had only used concrete classes like EOGenericRecord.

I would say that the server has correctly recognized the EO classes and has added some stuff to the wsdl. If that stuff is wrong I can't tell :-(

Would anybody have even the shortest snippet of code in which they pass an EO object between webservices it would help a lot. At lest I could check what I did wrong.

Bye,
Riccardo


On 17 ott 2005, at 21:34, LD wrote:


Hi there,

On 18/10/2005, at 12:17 AM, Riccardo De Menna wrote:



I was wondering if someone could help me shed some light on a problem that has locked me for a while. Let me first say I'm no expert on the subject and I'm a bit lost as I can't find any viable documentation to help me out.

I'm working on a client/server webservice app that needs to pass back and forth various EOEnterpriseObjects. For what I've understood, WO should be able to serialize and deserialize them out of the box. But I keep getting an error that I don't seem to understand. Everything else (Strings, Arrays etc) works fine... but as soon as I simply define a method that returns a EOEnterpriseObject descendant I get:

javax.xml.rpc.ServiceException: Error processing WSDL document: java.io.IOException: Type EOEnterpriseObject is referenced but not defined. Reason: Error processing WSDL document: java.io.IOException: Type EOEnterpriseObject is referenced but not defined.

    at org.apache.axis.client.Service.initService(Service.java:278)
    at org.apache.axis.client.Service.<init>(Service.java:193)
at org.apache.axis.client.ServiceFactory.createService (ServiceFactory.java:232) at com.webobjects.webservices.client.WOWebService.axisService (WOWebService.java:185) at com.webobjects.webservices.client.WOWebService.createCallForOperatio n(WOWebService.java:235) at com.webobjects.webservices.client.WOWebServiceClient.invoke (WOWebServiceClient.java:482)
    at CalculatorClient.invoke(CalculatorClient.java:51)
    at Main.calculate(Main.java:46)

As an example, my server app has a method like the following in the WS registered class (forgive my lack of imagination :) :

public EOGenericRecord test() {
    return new EOGenericRecord();
}



Random thoughts/guesses...
1) try the full package/class path: i.e.,
public com.webobjects.eocontrol.EOGenericRecord test() {...}

2) Would you have any better luck using the other constructor, where you provide the class description. Is that what it means by being undefined perhaps... return new EOGenericRecord (EOClassDescription.classDescriptionForEntityName("Author"));

3) Make sure the entity type is understood by the client app.

with regards,
--

LD




 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/demenna%40rdm- web.com

This email sent to [EMAIL PROTECTED]



Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to