Folks,

I'm trying to create the <wsdl:fault> element in my wsdl file.  
Can anyone tell me what value I should use for the "message" 
parameter? 

What namespace should I use?  I tried using the "impl:" prefix
that I see throught my wsdl file.  But I still get the exception
shown below:

I want to indicate that my method throws java.lang.Exception. 
How do I specify this? 

It appears that the string I put in the "message" parameter ends 
up appended to the "throws" clause on my method in the interface
file that AXIS auto-generates.  But I can't get a clean WSDL2Java
run when I put the exception class name. 

Here is the <wsdl:fault ...> element I added to my wsdl:

    <wsdl:operation name="testException">
         <wsdl:input message="impl:testExceptionRequest" 
                     name="testExceptionRequest"/>

         <wsdl:output message="impl:testExceptionResponse" 
                      name="testExceptionResponse"/>

        <wsdl:fault name="myException" message="impl:Exception" />
    </wsdl:operation>


But I get the following AXIS exceptions when I run 

    $ java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s  
      -p foo foo.wsdl


java.io.IOException: <input ..>, <output ..> or <fault ..> in <portType>
with undefined message found. message name is '{urn:foo}Exception'
        at 
org.apache.axis.wsdl.symbolTable.SymbolTable.ensureOperationMessageValid(SymbolTable.java:1504)
...
...



Thanks all.

V





--- Rhimbo <[EMAIL PROTECTED]> wrote:

> Philippe,
> 
> One other question...
> 
> What's the difference between using "soap:fault" and "wsdl:fault" ?
> 
> Also, I forgot to say... yes you are correct.  My implementation 
> class is not touched by the WSDL2Java command.  Each time I change 
> my interface (my "portType"), for example to add a new method or 
> change a method prototype, I have to make the corresponding change
> in my implementation class by hand. 
> 
> v
> 
> 
> 
> --- philippe ventrillon <[EMAIL PROTECTED]> wrote:
> 
> > Hi
> > 
> > I think if you are going from wsdl file you are supposed to 
> > Declare a message for the fault
> > put somehting like that in your porttype
> >         <operation name='getCurrentLanguageCursorPage'>
> >             <input message='tns:getCurrentLanguageCursorPageIn'/>
> >             <output message='tns:getCurrentLanguageCursorPageOut'/>
> >             <fault name='soapapiFault' message='tns:soapapiFault'/>
> >         </operation> 
> > 
> > Put something like that in the portBinding
> >             <fault name="soapapiFault">
> >                 <soap:fault name='soapapiFault' use='literal' />
> >             </fault>
> > 
> > I imagine that when you invoke wsdl2Java it regenerates the service
> > (with no
> > throws clause) but not the impl class
> > 
> > 
> > ---
> > Philippe
> > 
> > -----Original Message-----
> > From: Rhimbo [mailto:[EMAIL PROTECTED] 
> > Sent: jeudi 6 avril 2006 02:49
> > To: Axis users
> > Subject: Can't compile web service with exception
> > 
> > Hi all,
> > 
> > I too am having trouble with exceptions.  I can't even get past
> > compilation
> > now.  I added a simple method to my interface
> > definition:
> > Family.java:
> > 
> >      public void testException() throws Exception;
> > 
> > 
> > Here's the implementation:
> > FamilyImpl.java:
> > 
> >      public void testException() throws Exception 
> >      {
> >        throw new Exception("Well take that!");
> >      }
> > 
> > 
> > I did:
> > $ java org.apache.axis.wsdl.Java2WSDL -o family.wsdl \
> >   --implClass disney.dis.family.FamilyImpl \
> >   -l"http://localhost:8080/axis/services/familyAccounts"; \
> >   -p"disney.dis.family" urn:familyAccounts \
> >   disney.dis.family.Family
> > 
> > to generate the family.wsdl file.  Then I did:
> > 
> > $ java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s \
> >   -p disney.dis.family family.wsdl
> > 
> > 
> > When I compile, I get these errors:
> > 
> > FamilyAccountsSoapBindingImpl.java:123: testException() in
> > disney.dis.family.FamilyAccountsSoapBindingImpl cannot implement
> > testException() in disney.dis.family.Family; overridden method does
> not
> > throw java.lang.Exception
> >   public void testException() throws java.lang.Exception
> >               ^
> > FamilyImpl.java:1105: testException() in disney.dis.family.FamilyImpl
> > cannot
> > implement testException() in disney.dis.family.Family; overridden
> > method
> > does not throw java.lang.Exception
> >   public void testException() throws Exception
> > 
> > 
> > Apparently the compiler thinks that my method prototype in the
> > Family.java
> > interface definition doesn't throw Exception.  But it does (above).  
> > 
> > More strangely, here is the prototype from the _generated_ 
> Family.java
> > file:
> > 
> >     public void testException() throws java.rmi.RemoteException;
> > 
> > WSDL2Java added "throws java.rmi.RemoteException" but not "throws
> > Exception". 
> > 
> > Why is WSDL2Java not adding the "throws Exception" to the method
> > prototype
> > in the generated Family.java interface file? 
> > 
> > I followed a few threads the past several days about "tweaking the
> wsdl
> > file
> > to get exception handling correct."  I admit I didn't quite follow.  
> > 
> > Is there something I need to do after generating the wsdl file,
> before
> > running the WSDL2Java command, to get exceptions to work?  
> > 
> > Here is excerpt from the generated WSDL below:
> > 
> >    <wsdl:message name="testExceptionResponse">
> > 
> >    </wsdl:message>
> > 
> >   <wsdl:message name="testExceptionRequest">
> > 
> >    </wsdl:message>
> > 
> >    <wsdl:operation name="testException">
> > 
> >       <wsdl:input message="impl:testExceptionRequest"
> > name="testExceptionRequest"/>
> > 
> >       <wsdl:output message="impl:testExceptionResponse"
> > name="testExceptionResponse"/>
> > 
> >    </wsdl:operation>
> > 
> >      <wsdl:operation name="testException">
> > 
> >          <wsdlsoap:operation soapAction=""/>
> > 
> >          <wsdl:input name="testExceptionRequest">
> > 
> >             <wsdlsoap:body
> > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
> > namespace="urn:familyAccounts" use="encoded"/>
> > 
> >          </wsdl:input>
> > 
> >          <wsdl:output name="testExceptionResponse">
> > 
> >             <wsdlsoap:body
> > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
> > namespace="urn:familyAccounts" use="encoded"/>
> > 
> >          </wsdl:output>
> > 
> >       </wsdl:operation>
> > 
> > 
> > 
> > Thanks,
> > 
> > Vartan
> > 
> > 
> > 
> > 
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam protection around
> > http://mail.yahoo.com 
> > 
> > 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to