You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Matt Voysey (JIRA)" <ji...@apache.org> on 2008/01/30 17:12:34 UTC

[jira] Commented: (AXIS2-3301) Generated WSDL has validation errors when methods launch exceptions

    [ https://issues.apache.org/jira/browse/AXIS2-3301?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12564071#action_12564071 ] 

Matt Voysey commented on AXIS2-3301:
------------------------------------

I too am being hit by this problem. The issue occurs not just for web method Exception throws, but for any web method that uses a return type or argument type from a different package than the service class. The resulting wsdl generated contains multiple <xs:schema> tags for the types, each having a separate namespace according to the source package of the java types. It does not however contain the necessary <xs:import namespace="..."/> tags to make those types visible to eachother, hence the "components from this namespace are not referenceable" errors from the validators (I consistently get these errors when trying to generate web service clients from the wsdl using Eclipse, Netbeans and Visual Studio). This is invalid wsdl and should be fixed.

However I have also done some experimenting: It is possible to manually add the import tags to "fix" the generated wsdl so that it validates. However in my recent experience the current tools still fail to generate a working client that consumes the webservice: for example using the wsdl2java tool produces a client that fails at runtime with ADB parsing errors - in other words axis is unable to consume the web service it has created. Visual Studio similarly fails to generate a client for the webservice. 

The only success I have had is to move all of the types into the same java package (eg. com.foo.ws) and ALSO override the wsdl schema namespace in services.xml using <schema schemaNamespace="http://ws.foo.com/xsd"/>. This way the wsdl ends up with both the web service operations and the types it uses inside the same namespace and hence there is only one <schema> in the wsdl - and this then works with most client generation tools.

Has anybody had any success with clients where the wsdl contains multiple type schema namespaces?

> Generated WSDL has validation errors when methods launch exceptions
> -------------------------------------------------------------------
>
>                 Key: AXIS2-3301
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3301
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 1.3
>            Reporter: Mauro Molinari
>            Assignee: Deepal Jayasinghe
>            Priority: Critical
>         Attachments: ConvertTempAxis2 1.1.wsdl, ConvertTempFailing1.3.wsdl, src.zip, wsdl.zip
>
>
> Suppose you have the following class:
> package test;
> public class TestService
> {
>   public String login(String username, String password) throws MyException, MyException2
>   {
>     return "ticket";
>   }
>   
>   public void logout(String ticket) throws MyException, MyException2
>   {
>   }
> }
> and two simple extensions of java.lang.Exception called test.MyException and test.MyException2.
> When running java2wsdl with the following options:
> java2wsdl -o <output-path> -of TestService.wsdl -cp <classpah> -cn test.TestService
> I get a WSDL (attached as TestService.wsdl) for which Eclipse gives two validation errors:
> src-resolve.4.2: Error resolving component 'ns1:Exception'. It was detected that 'ns1:Exception' is in namespace 'http://test', but components from this namespace are not referenceable from schema document 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService.wsdl'. If this is the incorrect namespace, perhaps the prefix of 'ns1:Exception' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService.wsdl'.	TestService.wsdl	line 4
> src-resolve.4.2: Error resolving component 'ns0:MyException'. It was detected that 'ns0:MyException' is in namespace 'http://test/xsd', but components from this namespace are not referenceable from schema document 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService.wsdl'. If this is the incorrect namespace, perhaps the prefix of 'ns0:MyException' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService.wsdl'.	TestService.wsdl	line 8
> As suggested by some users in Eclipse WTP newsgroup, I tried the following:
> java2wsdl -o <output-path> -of TestService_Exception.wsdl -cp <classpah> -xc java.lang.Exception -cn test.TestService
> The result is a WSDL (attached as TestService_Exception.wsdl) for which Eclipse gives three validation errors:
> src-resolve.4.2: Error resolving component 'ns1:Exception'. It was detected that 'ns1:Exception' is in namespace 'http://test', but components from this namespace are not referenceable from schema document 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService_Exception.wsdl'. If this is the incorrect namespace, perhaps the prefix of 'ns1:Exception' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService_Exception.wsdl'.	TestService_Exception.wsdl	line 4
> src-resolve.4.2: Error resolving component 'xs:Throwable'. It was detected that 'xs:Throwable' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService_Exception.wsdl'. If this is the incorrect namespace, perhaps the prefix of 'xs:Throwable' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService_Exception.wsdl'.	TestService_Exception.wsdl	line 4
> src-resolve.4.2: Error resolving component 'ns0:MyException'. It was detected that 'ns0:MyException' is in namespace 'http://test/xsd', but components from this namespace are not referenceable from schema document 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService_Exception.wsdl'. If this is the incorrect namespace, perhaps the prefix of 'ns0:MyException' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:///C:/Documents%20and%20Settings/mauro/Documenti/Eclipse33%20workspace/Problema%20Axis2/TestService_Exception.wsdl'.	TestService_Exception.wsdl	line 8

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org