Interesting. Thanks, Chris. I wasn't aware that http:operation could point to remote locations even if http:addressLocation is "LOCAL". That's a useful bit of information to store away for future use.
What I ended up doing was creating a separate service definition and deployment for the getIcon() method, then simply linking the content model to this second service definition, also. Getting out of the code and thinking about it a little more abstractly, it didn't seem like a good idea to try to mix heterogeneous types of service deployments in the same definition and deployment; the Fedora architectures seems to encourage one to keep definitions and deployments atomic, and to do your aggregation in the content models. That makes more sense to me; that way, the web service getIcon() is not so tightly coupled to the object's content model and datastreams. -- Scott Chris Wilper wrote: > Hi Scott, > > You're right that Fedora only expects one WSDL binding. It looks like > you created to separate ones because one of them uses the special > "LOCAL" syntax (used often to link directly to a datastream) and the > other points to a specific service. > > I know it's possible in general to have on SDep point to two separate > service endpoints on the same host, because it's done by the > demo:CollectionImpl object. This is accomplished by specifying > http://host:port/ for the http:address location, and the remainder of > the invocation path in the http:operation location. But we currently > don't have any examples of linking directly to a datastream *and* a > service in the same SDep. > > Besides the examples, currently the best documentation on how this all > hangs together is found is the code. Here's a relevant comment I just > dug out of fedora/server/access/dissemination/DisseminationService.java: > > // If addressLocation has a value of "LOCAL", this > indicates > // the associated operationLocation requires no > addressLocation. > // i.e., the operationLocation contains all > information necessary > // to perform the dissemination request. This is a > special case > // used when the web services are generally > mechanisms like cgi-scripts, > // java servlets, and simple HTTP GETs. Using the > value of LOCAL > // in the address location also enables one to > have different methods > // serviced by different hosts. [...] > > So I believe you can accomplish what you're after by using a single > binding that specifies "LOCAL" for the http:addressLocation. Then, > for any operation that points to the image manipulation service, > specify the full path to the service in the operationLocation. > > - Chris -- Scott Prater Library, Instructional, and Research Applications (LIRA) Division of Information Technology (DoIT) University of Wisconsin - Madison [email protected] ------------------------------------------------------------------------------ This SF.net email is sponsored by: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ Fedora-commons-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers
