Apache CXF provides an extension to the standard JAX-WS injection mechanism that allows developers
to replace a sequence of injection annotations with a single annotation. The single annotation is place
on a bean containing fields for the data that is extracted using the annotation. For example, if a resource
method is expecting a request URI to include three query parameters called id,
type, and size, it could use a single
@QueryParam annotation to inject all of the parameters into a bean with
corresponding fields.
This extension does not support all of the injection parameters. It only supports the following ones:
@PathParam
@QueryParam
@MatrixParam
@FormParam
To indicate that an annotation is going to use serial injection into a bean, you need to do two things:
Specify the annotation's parameter as an empty string. For example @PathParam("") specifies
that a sequence of URI template variables are to be serialized into a bean.
Ensure that the annotated parameter is a bean with fields that match the values being injected.
Example 3.11 shows an example of injecting a number of Query parameters into a bean. The
resource method expect the request URI to include two query parameters: type and
id. Their values are injected into the corresponding fields of the
Monster bean.
Example 3.11. Injecting query parameters into a bean
import javax.ws.rs.QueryParam;
import javax.ws.rs.PathParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
...
@Path("/monstersforhire/")
public class MonsterService
{
...
@POST
public void updateMonster(@QueryParam("") Monster bean)
{
...
}
...
}
public class Monster
{
String type;
String id;
...
}