[ http://issues.apache.org/jira/browse/TUSCANY-217?page=all ]
Jean-Sebastien Delfino updated TUSCANY-217:
-------------------------------------------
Fix Version: 0.91
Version: 0.91
> WSDLDefinition caching allows EntryPoint WS URLs to clobber ExternalService
> URLs
> ---------------------------------------------------------------------------------
>
> Key: TUSCANY-217
> URL: http://issues.apache.org/jira/browse/TUSCANY-217
> Project: Tuscany
> Type: Improvement
> Components: Java SCA Model
> Versions: 0.91
> Environment: Windows - Tomcat - April 17th download of Tuscany SVN
> Reporter: Scott Kurz
> Priority: Minor
> Fix For: 0.91
>
> At a high-level, the problem is just that the URL in the EntryPoint-side WSDL
> used in a WS binding.sometimes matters and sometimes does not. When invoking
> over a WS binding, it might be nice to say that, although both client and
> server have a copy of the WSDL, that only the client URL matters, but not the
> server's.
> The URL I'm talking about appears in the WSDL's <wsdlsoap:address> tag.
> If an ExternalService using a WS binding with the same namespace as the Entry
> Point is hosted in the same process as the Entry Point, then the URL used to
> invoke the ExternalService will come from whichever WSDL Definition is loaded
> first, the EntryPoint's or the ExternalService's. To be sure that the
> correct URL is used, you must keep both URLs in synch with the URL
> corresponding to the URL at which the app is actually hosted (i.e. the IP
> address and port of your Tomcat service, plus your app's context root, plus
> the SCA-specific portion of the URL at the end).
> If the ExternalService lives in another JVM, however, then the EntryPoint
> WSDL's URL is irrelevant for invoking the SCA WS over the External Service WS
> binding. Then you only need to synchronize the External Service URL with the
> URL at which the app is actually hosted. By adding an External Service into
> the same JVM as the SCA WS with Entry Point , then, you all of a sudden make
> the Entry Point WSDL's URL relevant.
> To recreate this problem, take the HelloWorldWSClient sample, and put a JSP
> front-end on it, and package it into a WAR. Then take the HelloWorld WS
> sample WAR, and tweak the URL to something that doesn't match your Tomcat
> server's URL.
> If you install both WARs and you ensure that the newly-created
> HelloWorldWSClient WAR starts before the HelloWorld WS WAR (with bad URL),
> the sample will work fine... HelloWorldWSClient WAR will call out the WS in
> HelloWorld WS. If, however, the apps are started in reverse order, the
> garbage URL on the EntryPoint-side will take effect and it don't work.
> At a low-level, the problem seems to be the definitionsByNamespace map used
> by the method
> org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl.loadDefinitions,
> which maps namespaces to WSDL Definitions.
>
> Assuming there is value caching WSDL Definitions per Namespace, maybe the
> cache should be implemented such that EntryPoint-side URLs would not take
> precedence over an ExternalService-side URL in this manner.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira