Hello Dims,

I understand the bottom line, but if you would tell me the but's and if's you are referring to, that would make my day. (as it took me quite a while to investigate what's up with RemoteExceptions) 8-)

Also, what kind of WSDL did you use to create this exception class?

Thanks,
Dies


Davanum Srinivas wrote:
Dies,

there are several if's and but's :) so the bottom line is to start
with a wsdl and run the code generator (wsdl2java) that's guaranteed
to work.

thanks,
dims

On 1/10/06, Dies Koper <[EMAIL PROTECTED]> wrote:

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/






--
Davanum Srinivas : http://wso2.com/blogs/


Reply via email to