axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Clinton" <James.Clin...@ins-sure.com>
Subject RE: WS-I compliancy problem for generated wrapped WSDL
Date Fri, 21 Jan 2005 15:28:03 GMT
Document Literal is WS-I, it doesn't need to be wrapped, it can also be
of type RPC.

 

-----Original Message-----
From: Eugene Shershnev [mailto:shersh@gmail.com] 
Sent: 21 January 2005 14:55
To: axis-user@ws.apache.org
Subject: Re: WS-I compliancy problem for generated wrapped WSDL

 

Thanks Simon!

 

Regarding the 2nd one, how come I "have rpc/encoded service"?

In the .wsdd file:

<service name="ent" provider="java:RPC" style="wrapped">

Is there something else I have to specify in there?

 

And the 3rd one looks like an error to me - a namespace isn't defined
anywhere.

 

Thanks,

Eugene

 

	----- Original Message ----- 

	From: Simon Fell <mailto:sfell@salesforce.com>  

	To: axis-user@ws.apache.org ; Eugene Shershnev
<mailto:shersh@gmail.com>  

	Sent: Thursday, January 20, 2005 5:01p

	Subject: RE: WS-I compliancy problem for generated wrapped WSDL

	 

	The first one is a false assertion from the WS-I tools, if you
read the WS-I BP erata, you'll see that it wasn't suposed to make inline
schemas illegal.

	The second one is because you have an rpc/encoded service, which
uses that arrayType, you'll need to change your service to be
doc/literal (probably wrapped) to be WS-I compliant.

	 

	Cheers

	Simon

	 

	
  _____  


	From: Eugene Shershnev [mailto:shersh@gmail.com] 
	Sent: Thursday, January 20, 2005 1:58 PM
	To: axis-user@ws.apache.org
	Subject: WS-I compliancy problem for generated wrapped WSDL

		Hi All,

		 

		The WSDL generated from a simple class does not go
though SOAPscope WS-I test.

		It fails in 3 different points:

		 

		Assertion: WSI2102 
		Message: An XML schema import element references
something other than an XML schema definition: the referenced element
does not have "schema" from XML namespace
"http://www.w3.org/2001/XMLSchema" as root element. 
		Detail Message: http://enterprise.ent

		
		Assertion: WSI2108 
		Message: An Array declaration uses - restricts or
extends - the soapenc:Array type, or the wsdl:arrayType attribute is
used in the type declaration. 
		Detail Message:
{http://localhost:9090/axis/services/ent}ArrayOf_xsd_anyType

		 

		Assertion: WSI2122 
		Result: failed 
		Message: A wsdl:types element contained a data type
definition that is not an XML schema definition. 
		Detail Message: Error: UndeclaredPrefix: Cannot resolve
'tns2:Array' as a QName: the prefix 'tns2' is not declared.,
		Error: cvc-datatype-valid.1.2.1: 'tns1:credentials' is
not a valid 'NCName' value.

		Here is the interface whose implementation was used to
generate a WSDL.

		 

		package ent.enterprise;

		 

		import java.util.List;

		 

		public interface EntAPI
		{
		        public String login(String[] credentials, String
locale);
		        public void logout(String sid);
		        public List list(String sid);
		        public EntDocument load(String sid, String uri);
		        public String create(String sid, String name);
		        public void delete(String sid, String uri);
		        public void write(String sid, String uri, byte[]
data);
		        public byte[] read(String sid, String uri, long
offset, int length);
		        public void clear(String sid, String uri);
		}

		 

		
		public class EntDocument implements Serializable
		{
		        private String  _name;
		        private long    _size;
		        private String  _uri;

		 

		        public EntDocument()
		        {
		        }

		 

		        public String getName() { return _name; }
		        public void setName(String name) { _name = name;
}

		 

		        public long getSize() { return _size; }
		        public void setSize(long size) { _size = size; }

		 

		        public String getURI() { return _uri; }
		        public void setURI(String uri) { _uri = uri; }
		}

		 

		 

		The WSDL is generated "on-the-fly":

		- a JAR file is on shared classpath

		- Axis is deployed as a web app

		- web services is deployed only using wsdd file

		 

		<deployment xmlns="http://xml.apache.org/axis/wsdd/"
	
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
		    <service name="ent" provider="java:RPC"
style="wrapped">
		        <parameter name="className"
value="ent.enterprise.EntAPI" />
		        <parameter name="allowedMethods" value="load
write clear list delete read create login logout"/>
		        <beanMapping
	
xmlns:tns="http://enterprise.ent"
		                    qname="tns:EntDocument"
	
languageSpecificType="java:ent.enterprise.EntDocument"/>
		    </service>
		</deployment>

		 

		Here is the WSDL:

		 

		<?xml version="1.0" encoding="UTF-8"?>
		<wsdl:definitions
targetNamespace="http://localhost:9090/axis/services/ent"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://localhost:9090/axis/services/ent"
xmlns:intf="http://localhost:9090/axis/services/ent"
xmlns:tns1="http://enterprise.ent"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
		<!--WSDL created by Apache Axis version: 1.2RC2
		Built on Nov 16, 2004 (12:19:44 EST)-->
		 <wsdl:types>
		  <schema elementFormDefault="qualified"
targetNamespace="http://enterprise.ent"
xmlns="http://www.w3.org/2001/XMLSchema">
		   <import
namespace="http://localhost:9090/axis/services/ent"/
<http://localhost:9090/axis/services/ent> >
		   <element name="login">
		    <complexType>
		     <sequence>
		      <element maxOccurs="unbounded"
name="tns1:credentials" type="xsd:string"/>
		      <element name="tns1:locale" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="loginResponse">
		    <complexType>
		     <sequence>
		      <element name="loginReturn" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="logout">
		    <complexType>
		     <sequence>
		      <element name="tns1:sid" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="logoutResponse">
		    <complexType/>
		   </element>
		   <element name="clear">
		    <complexType>
		     <sequence>
		      <element name="tns1:sid" type="xsd:string"/>
		      <element name="tns1:uri" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="clearResponse">
		    <complexType/>
		   </element>
		   <element name="load">
		    <complexType>
		     <sequence>
		      <element name="tns1:sid" type="xsd:string"/>
		      <element name="tns1:uri" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="loadResponse">
		    <complexType>
		     <sequence>
		      <element name="loadReturn"
type="tns1:EntDocument"/>
		     </sequence>
		    </complexType>
		   </element>
		   <complexType name="EntDocument">
		    <sequence>
		     <element name="URI" nillable="true"
type="xsd:string"/>
		     <element name="name" nillable="true"
type="xsd:string"/>
		     <element name="size" type="xsd:long"/>
		    </sequence>
		   </complexType>
		   <element name="write">
		    <complexType>
		     <sequence>
		      <element name="tns1:sid" type="xsd:string"/>
		      <element name="tns1:uri" type="xsd:string"/>
		      <element name="tns1:data"
type="xsd:base64Binary"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="writeResponse">
		    <complexType/>
		   </element>
		   <element name="list">
		    <complexType>
		     <sequence>
		      <element name="tns1:sid" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="listResponse">
		    <complexType>
		     <sequence>
		      <element name="listReturn"
type="impl:ArrayOf_xsd_anyType"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="delete">
		    <complexType>
		     <sequence>
		      <element name="tns1:sid" type="xsd:string"/>
		      <element name="tns1:uri" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="deleteResponse">
		    <complexType/>
		   </element>
		   <element name="read">
		    <complexType>
		     <sequence>
		      <element name="tns1:sid" type="xsd:string"/>
		      <element name="tns1:uri" type="xsd:string"/>
		      <element name="tns1:offset" type="xsd:long"/>
		      <element name="tns1:length" type="xsd:int"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="readResponse">
		    <complexType>
		     <sequence>
		      <element name="readReturn"
type="xsd:base64Binary"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="create">
		    <complexType>
		     <sequence>
		      <element name="tns1:sid" type="xsd:string"/>
		      <element name="tns1:name" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		   <element name="createResponse">
		    <complexType>
		     <sequence>
		      <element name="createReturn" type="xsd:string"/>
		     </sequence>
		    </complexType>
		   </element>
		  </schema>
		  <schema elementFormDefault="qualified"
targetNamespace="http://localhost:9090/axis/services/ent"
xmlns="http://www.w3.org/2001/XMLSchema">
		   <import namespace="http://enterprise.ent"/
<http://enterprise.ent> >
		   <complexType name="ArrayOf_xsd_anyType">
		    <complexContent>
		     <restriction base="tns2:Array">
		      <attribute ref="tns2:arrayType"
wsdl:arrayType="xsd:anyType[]"/>
		     </restriction>
		    </complexContent>
		   </complexType>
		  </schema>
		 </wsdl:types>
		   <wsdl:message name="logoutResponse">
		      <wsdl:part element="tns1:logoutResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="createRequest">
		      <wsdl:part element="tns1:create"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="clearRequest">
		      <wsdl:part element="tns1:clear"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="clearResponse">
		      <wsdl:part element="tns1:clearResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="readRequest">
		      <wsdl:part element="tns1:read" name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="deleteResponse">
		      <wsdl:part element="tns1:deleteResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="logoutRequest">
		      <wsdl:part element="tns1:logout"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="loginResponse">
		      <wsdl:part element="tns1:loginResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="writeRequest">
		      <wsdl:part element="tns1:write"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="readResponse">
		      <wsdl:part element="tns1:readResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="loadRequest">
		      <wsdl:part element="tns1:load" name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="deleteRequest">
		      <wsdl:part element="tns1:delete"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="writeResponse">
		      <wsdl:part element="tns1:writeResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="listRequest">
		      <wsdl:part element="tns1:list" name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="listResponse">
		      <wsdl:part element="tns1:listResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="loadResponse">
		      <wsdl:part element="tns1:loadResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="createResponse">
		      <wsdl:part element="tns1:createResponse"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:message name="loginRequest">
		      <wsdl:part element="tns1:login"
name="parameters"/>
		   </wsdl:message>
		   <wsdl:portType name="EntAPI">
		      <wsdl:operation name="login">
		         <wsdl:input message="impl:loginRequest"
name="loginRequest"/>
		         <wsdl:output message="impl:loginResponse"
name="loginResponse"/>
		      </wsdl:operation>
		      <wsdl:operation name="logout">
		         <wsdl:input message="impl:logoutRequest"
name="logoutRequest"/>
		         <wsdl:output message="impl:logoutResponse"
name="logoutResponse"/>
		      </wsdl:operation>
		      <wsdl:operation name="clear">
		         <wsdl:input message="impl:clearRequest"
name="clearRequest"/>
		         <wsdl:output message="impl:clearResponse"
name="clearResponse"/>
		      </wsdl:operation>
		      <wsdl:operation name="load">
		         <wsdl:input message="impl:loadRequest"
name="loadRequest"/>
		         <wsdl:output message="impl:loadResponse"
name="loadResponse"/>
		      </wsdl:operation>
		      <wsdl:operation name="write">
		         <wsdl:input message="impl:writeRequest"
name="writeRequest"/>
		         <wsdl:output message="impl:writeResponse"
name="writeResponse"/>
		      </wsdl:operation>
		      <wsdl:operation name="list">
		         <wsdl:input message="impl:listRequest"
name="listRequest"/>
		         <wsdl:output message="impl:listResponse"
name="listResponse"/>
		      </wsdl:operation>
		      <wsdl:operation name="delete">
		         <wsdl:input message="impl:deleteRequest"
name="deleteRequest"/>
		         <wsdl:output message="impl:deleteResponse"
name="deleteResponse"/>
		      </wsdl:operation>
		      <wsdl:operation name="read">
		         <wsdl:input message="impl:readRequest"
name="readRequest"/>
		         <wsdl:output message="impl:readResponse"
name="readResponse"/>
		      </wsdl:operation>
		      <wsdl:operation name="create">
		         <wsdl:input message="impl:createRequest"
name="createRequest"/>
		         <wsdl:output message="impl:createResponse"
name="createResponse"/>
		      </wsdl:operation>
		   </wsdl:portType>
		   <wsdl:binding name="entSoapBinding"
type="impl:EntAPI">
		      <wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/
<http://schemas.xmlsoap.org/soap/http> >
		      <wsdl:operation name="login">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="loginRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="loginResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		      <wsdl:operation name="logout">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="logoutRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="logoutResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		      <wsdl:operation name="clear">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="clearRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="clearResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		      <wsdl:operation name="load">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="loadRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="loadResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		      <wsdl:operation name="write">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="writeRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="writeResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		      <wsdl:operation name="list">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="listRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="listResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		      <wsdl:operation name="delete">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="deleteRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="deleteResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		      <wsdl:operation name="read">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="readRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="readResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		      <wsdl:operation name="create">
		         <wsdlsoap:operation soapAction=""/>
		         <wsdl:input name="createRequest">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:input>
		         <wsdl:output name="createResponse">
		            <wsdlsoap:body use="literal"/>
		         </wsdl:output>
		      </wsdl:operation>
		   </wsdl:binding>
		   <wsdl:service name="EntAPIService">
		      <wsdl:port binding="impl:entSoapBinding"
name="ent">
		         <wsdlsoap:address
location="http://localhost:9090/axis/services/ent"/
<http://localhost:9090/axis/services/ent> >
		      </wsdl:port>
		   </wsdl:service>
		</wsdl:definitions>

		 

		I will appreciate any help with the pointers on fixing
this WSDL and hopefully some information on tns2 namespace.

		 

		Thanks,

		Eugene



----------------------------------------------------------------------------------------------
Meeting Customer Needs Exactly
 
Whether you are a Managing Agent, Lloyd's Broker or London market insurer or reinsurer, our
Insurance Professional Services teams can meet the challenges that unforeseen resourcing or
business requirements can present.
 
By drawing on our full range of services, short-term business problems can be solved quickly,
project-based staffing requirements can be met efficiently and longer-term strategic business
initiatives can be resourced effectively.
 
To find out how we can help your business, visit www.xchanging.com/xips or contact Paul Gilbert
on 0207 972 0011.

----------------------------------------------------------------------------------------------



-----------------------------------------------------
THE INFORMATION IN THIS E-MAIL AND IN ANY ATTACHMENTS IS CONFIDENTIAL

AND MAY BE PRIVILEGED OR OTHERWISE PROTECTED FROM DISCLOSURE. 
IF YOU ARE NOT THE INTENDED RECIPIENT AND HAVE RECEIVED IT IN ERROR YOU ARE ON NOTICE OF ITS
STATUS. 
PLEASE NOTIFY THE SENDER IMMEDIATELY BY RETURN EMAIL AND THEN DELETE THIS EMAIL AND ANY ATTACHMENT
FROM YOUR SYSTEM. 
YOU MUST NOT RETAIN, COPY OR USE THIS E-MAIL OR ANY ATTACHMENT FOR ANY PURPOSE, NOR DISCLOSE
ALL OR ANY PART OF ITS CONTENTS TO ANY OTHER PERSON: 

TO DO SO COULD BE A BREACH OF CONFIDENCE

EMAIL MAY BE SUSCEPTIBLE TO DATA CORRUPTION, INTERCEPTION AND UNAUTHORISED AMENDMENT, 
AND WE DO NOT ACCEPT LIABILITY FOR ANY SUCH CORRUPTION, INTERCEPTION OR AMENDMENT OR THE CONSEQUENCES
THEREOF. 

WE MAY MONITOR THE CONTENT OF EMAILS SENT AND RECEIVED VIA OUR NETWORK FOR VIRUSES OR UNAUTHORISED
USE AND FOR OTHER LAWFUL BUSINESS PURPOSES. 
WE DO NOT ACCEPT RESPONSIBILITY FOR ANY LOSS OR DAMAGE ARISING FROM A VIRUS IN ANY EMAIL OR
ATTACHMENT.

-----------------------------------------------
postmaster@ins-sure.com


Mime
View raw message