Hello,

I got wsrp4j from the trunk. It's a version from 13. of September, so
it's pretty current one.
First I got problems to deploy this version on Bea Weblogic 9.2.1 due
some minor incompatibilities in WSRP4J: The class
org.apache.wsrp4j.persistence.xml.driver.ProducerPersistentInformationPr
oviderImpl  failed to calculate a proper ROOT_DIR, but I fixed this by
providing some hard coded value.

By the way: I recomend to calculate the ROOT_PATH by using spring
capabilities, not by calculating this in a factory class. Spring seams
to use a ServletContext for calculation which seems to be much more
stable than calculating it from a classloader which is very depend on
the servlet engine implemention.

After applying that little fix, I managed wsrp to deploy in Bea Weblogic
9.2.1. But I still got problems to get the wsdl of the producer servlet.
A call to
http://localhost:7001/wsrp4j-producer/services/WSRPServiceDescriptionSer
vice?wsdl results in an error
AXIS error
Sorry, something seems to have gone wrong... here are the details:

Fault - Bean attribute lang is of type java.lang.String, which is not a
simple type
AxisFault
 faultCode:
{http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
 faultSubcode: 
 faultString: Bean attribute lang is of type java.lang.String, which is
not a simple type
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}hostname:dbn33d9

I checked the reason in the Axis framework. I use Axis Version 1.4,
which is the build version given by the wsrp4j pom.xml files. The reason
is given by the method
writeAttribute(Types types, String fieldName, Class fieldType, QName
fieldXmlType, Element where) of
org.apache.axis.encoding.ser.BeanSerializer. This method is called while
serializing the "lang" attribute of
oasis.names.tc.wsrp.v1.types.LocalizedString.

The writeAttribute method calls isAcceptableAsAttribute(Class type)
method of org.apache.axis.wsdl.fromJava.Types, which seems for me to be
a conceptual error. In my opinion the acceptability has to be calculated
from the XmlType of the "lang" attribute which is
{http://www.w3.org/2001/XMLSchema}string. By calling
isAcceptableAsAttribute with an class argument, Axis is forced to look
in type mapping registry to get the xmlType of the argument. But as
there are differend xml types mapped to the java.lang.String class, so
the result is very random.
It just happened the result was a {urn:oasis:names:tc:wsrp:v1:types}Key.
Axis checks this to be a simple xml type, but
{urn:oasis:names:tc:wsrp:v1:types}Key is not, while
{http://www.w3.org/2001/XMLSchema}string is. This is because of the
namespace part. As a result Axis throws an AxisFault.

As I think this is an axis bug and this should also be reported to the
axis comunity. Nevertheless, I wounder how do the wsrp4j developers
manage to got a single successful test of the wsrp4j framework? Does
this imply, I'm totally wrong? Or does this imply the wsrp4j project got
stuck due of usage of a buggy axis framework?

Kind regards

Siegfried Sauter-Fischer


T-Mobile Deutschland GmbH
Aufsichtsrat: Hamid Akhavan (Vorsitzender)
Geschaftsfuhrung: Philipp Humm (Sprecher), Thomas Berlemann, Stefan Homeister, 
Holger Kranzusch, Gunther Ottendorfer, Dr. Raphael Kubler, Dr. Steffen Roehn
Handelsregister: Amtsgericht Bonn, HRB 59 19
Sitz der Gesellschaft: Bonn
WEEE-Reg.-Nr.: DE60800328

Reply via email to