With JAX-WS 2.0, I don't think theres a "clean" way to do this. You
could do something like:
Object getAnnotation(String classOfAnnotation);
and on the client side, provide a utility like:
public T getAnnotation(Class<T> classOfAnnotation) {
return classOfAnnotation.cast(
service.getAnnotation(classOfAnnotation.getName());
);
}
That kind of sucks though. With JAX-WS 2.1, you MIGHT be able to use
the @XmlJavaTypeAdapter annotation on the Class parameter to map it to a
String in the wsdl to do much of that automatically. To do that with
2.0 would require you to use wrapped doc/lit and to write
a "GetAnnotationRequest" class that hadd the @XmlJavaTypeAdapter on
the "classOfAnnotation" property.
The other issue you will run into is getting all the possible types of
<T> into the JAXB contexts so that they can be marshalled. The
jaxb.index files can come in there as well as the spring configurations
for the JAXB databindings and such.
Dan
On Tuesday 21 August 2007, Benson Margulies wrote:
> We've got an API that associates from a class to an object of the
> class. It's not unlike some of the insides of CXF in this regard. It
> depends on generics.
>
>
>
> T getAnnotation(Class<T> classOfAnnotation)
>
>
>
> We're trying to export this as a web service via CXF.
>
>
>
> Mediocre alternative #1:
>
>
>
> Use the @XmlElement annotation that specifies a choice for the
> XSD, and simply return a Set<Object> marked up as a set of the limited
> set of possible classes noted in the @XmlElement.
>
>
>
> This is not so hot, as the caller now has to crawl around in the Set
> or List or whatever to find the item of the desired class.
>
>
>
> We were hoping to cook up a way to express
>
>
>
> Map<String, Object>, and provide the class names as the keys. We
> can't figure out the @XmlElement magic that would support this, if
> any. Any JAX-WS experts out there with a clue, or the word that there
> is no hope?
--
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727 C: 508-380-7194
[EMAIL PROTECTED]
http://www.dankulp.com/blog