Hello Jarmo, Dims,

About your #1 issue, I think it is a problem with the sample.

The exception extends java.rmi.RemoteException.
This superclass has a public Throwable "detail" field.
So when you run java2wsdl, it'll try to map the detail field that your
exception class inherited to XML. However, there is no standard mapping
for fields of type Throwable, so it warns you to register a custom
mapper, and continues by mapping the field to an xsd:anyType (optional
mapping according to the JAX-RPC1.1 spec).

When you create your client classes from the WSDL you'll end up with a
"detail" field of java.lang.Object or SOAPElement, not sure which, as
again there is no default mapping for this type.

The JAX-RPC 1.1 spec speaks of service specific Java exception (declared
as checked exceptions) and RemoteExceptions (and its subclasses), with
the latter being used for problems related to remote method invocations
(java.rmi.ConnectionException when you forgot to start the webserver, etc.).

The sample's exception name is NoSuchEmployeeFault, which I think is a
service specific exception, and therefore should extend
java.lang.Exception, not java.lang.RemoteException.

Dims,
According to the following bug report you committed this sample.

 http://issues.apache.org/bugzilla/show_bug.cgi?id=19682

I'd like to hear your comments about my comments above.

Regards,
Dies


Jarmo Doc wrote:
> I do use document/literal.
> 
> On the #1 issue below, I see the following from java2wsdl:
> 
> - Please register a typemapping/beanmapping for 'xyz.myexception'
> - The class java.lang.Throwable is defined in a java or javax package 
> and cannot be converted into an xml schema type.  An xml schema anyType 
> will be used to define this class in the wsdl file.
> 
> How do I 'tweak' the WSDL to correct these issues?
> 
> On the #2 issue below, I eventually found a workaround which is instead 
> of writing the following:
> 
> public class Employer
> {
>  public int employerID;
>  public Employee [] employees;
> }
> 
> just write the following:
> 
> public class Employer
> {
>  public int employerID;
>  public Employee [] employees; // could be private
> 
>  public Employee [] getEmployees()
>  {
>    return this.employees;
>  }
> 
>  public void setEmployees(Employee [] employees)
>  {
>    this.employees = employees;
>  }
> }
> 
> This 'hack' solved all my problems to do with having to use 
> ArrayOfEmployee in boith the Axis server and Axis clients.
> 
> On #3, I don't have a solution yet so may have to create an intermediate 
> class that contains the Booleans and then pass that class to the 
> operation rather than passing the contained Booleans.
> 
>> From: Davanum Srinivas <[EMAIL PROTECTED]>
>> Reply-To: [EMAIL PROTECTED]
>> To: axis-user@ws.apache.org
>> Subject: Re: Axis 1.3 suitable for production env?
>> Date: Tue, 10 Jan 2006 11:58:31 -0500
>>
>> for 1/2/3. You need to use java2wsdl ONLY once, then tweak it. Make
>> sure u use document/literal and not rpc/encoded.
>>
>> thanks,
>> dims
>>
>> On 1/10/06, Jarmo Doc <[EMAIL PROTECTED]> wrote:
>> > Is Axis 1.3 suitable for a production environment?  And is it the most
>> > suitable Axis version for a production environment?
>> >
>> > I ask because some very, very basic things appear to cause major 
>> headaches:
>> >
>> > 1. exceptions descending from java.rmi.RemoteException (as per the Axis
>> > sample NoSuchEmployeeFault) cause java2wsdl to report "The class
>> > java.lang.Throwable is defined in a java or javax package and cannot be
>> > converted into an xml schema type.  An xml schema anyType will be 
>> used to
>> > define this class in the wsdl file."
>> >
>> > 2. you have to jump through hoops to avoid intermediate ArrayOfxxxx 
>> classes.
>> >
>> > 3. Boolean parameters to operations appear to be converted to intrinsic
>> > booleans (note lowercase) in an Axis client so you can only pass 
>> true/false
>> > when you need to be able to pass true/false/null.
> 
> 
> _________________________________________________________________
> Express yourself instantly with MSN Messenger! Download today - it's 
> FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
> 
> 

Reply via email to