[ http://jira.jboss.com/jira/browse/JBAS-1115?page=history ]
     
Thomas Diesler resolved JBAS-1115:
----------------------------------

    Resolution: Done

Fixed in Branch_4_0

> bad path to included xsd gets built in WSDLFilePublisher
> --------------------------------------------------------
>
>          Key: JBAS-1115
>          URL: http://jira.jboss.com/jira/browse/JBAS-1115
>      Project: JBoss Application Server
>         Type: Bug
>   Components: Web Services service
>     Versions: JBossAS-4.0.0 Final
>     Reporter: SourceForge User
>     Assignee: Thomas Diesler
>      Fix For: JBossAS-4.0.2 Final

>
>
> SourceForge Submitter: mazzgolf .
> Problem when deploying a web service whose WSDL 
> imports/includes other WSDL/schemas.
> See attached for a simple hello.war that illustrates this 
> problem. To replicate, simply place the war file in the 
> JBoss deploy directory and start.
> I don't think this has anything to do with platforms, but 
> just in case - this is on JBoss 4.0, JDK 1.4.2, Windows 
> XP SP1.
> Description:
> My web service WSDL imports another WSDL which in 
> turn includes a schema (these are WSRF specification 
> files).
> It looks like WSDLFilePublisher is not building the path 
> correctly to that included schema. It's missing a "/" in 
> one spot and has a double slash "//" in another spot. 
> While debugging in WSDLFilePublisher, line 206 results in 
> this as value for resourcePath: 
> WEB-INF/wsdl//services/../spec/wsrfWS-
> ResourceProperties-1_1.xsd 
> Note that there is a "/" missing between the last 
> directory "wsrf" and the schema filename "WS-
> ResourceProperties-1_1.xsd". There is also a double 
> slash "//" in there as well.  The double-slash is probably 
> OK and most file systems will parse it fine, however, 
> obviously the missing slash is going to cause problems 
> (which it does on my box).
> The value of this.expLocation was "WEB-INF/wsdl/" and 
> the value of schemaLocation was "WS-
> ResourceProperties-1_1.xsd". baseURI had a value 
> of "file:/C:/mazz/jboss/jboss-
> 4.0.0/server/default/data/wsdl/jboss-
> wsdm.war/services/../spec/wsrf/WS-ResourceProperties-
> 1_1.wsdl". this.di.shortName is "jboss-wsdm.war". index 
> is 57. All of those values are correct.
> The WSDL includes the .xsd like this: 
> <wsd:types><xsd:schema> 
> <xsd:include schemaLocation="WS-ResourceProperties-
> 1_1.xsd"/> 
> ... 
> The resulting exception is (which is actually thrown in 
> line 210): 
> 16:13:24,774 ERROR [ServiceDeployer] Cannot startup 
> webservice for: jboss-wsdm.war 
> org.jboss.deployment.DeploymentException: Cannot 
> publish wsdl to: C:\mazz\jboss\jboss-4.0.0
> \server\default\data\wsdl\jboss-
> wsdm.war\services\sensor.wsdl; - nested throwable: 
> (java.lang.IllegalArgumentException: Cannot find schema 
> import in 
> deployment: WEB-INF/wsdl//services/../spec/wsrfWS-
> ResourceProperties-1_1.xsd) 
> at 
> org.jboss.webservice.WSDLFilePublisher.publishWsdlFile
> (WSDLFilePublisher.java:106)
> If, in my debugger, I fix the resourcePath evaluated on 
> line 205 such that the path has the proper slashes, my 
> web service deploys fine.
> In this example, its as if I made this fix on line 205 of 
> WSDLFilePublisher.java
> from:
>    resourcePath = resourcePath.substring(0, 
> resourcePath.lastIndexOf("/"));
> to:
>    resourcePath = resourcePath.substring(1, 
> resourcePath.lastIndexOf("/") + 1);
> Obviously, it would be best if no assumptions were made 
> about the location of "/" (that is to say, don't assume 
> resourcePath has a leading "/" - I do above and hence 
> the "1" in the first argument to substring).  Probably 
> would be better if we do something like this for the first 
> parameter to that substring:
> resourcePath.charAt(0) == "/" ? 1 : 0
> Same holds true with that second argument.  We should 
> not do the "+1" if we know the schemaLocation is an 
> absolute path.  Otherwise, we'd introduce another 
> double slash.  So, perhaps, line 205 should be the 
> following:
>    resourcePath = resourcePath.substring
> (resourcePath.chatAt(0) == "/" ? 1 : 0, 
> resourcePath.lastIndexOf("/") + (schemaLocation.charAt
> (0) == "/" ? 0 : 1));
> I'll leave it up to the commiter to decide the best course 
> of action.
> John Mazz

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.jboss.com/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
JBoss-Development mailing list
JBoss-Development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to