是否有可能(
Java EE,JBoss 6)巧妙地注释Java代码以提供RESTful和SOAP Web服务而无需实现两种方法?
我在考虑:
@Local
@Path("/service")
@WebService
public interface SomeService {
@GET @Path("somemethod")
@WebMethod
public String someMethod (@QueryParam("s") String someParam);
}
请注意@Path和@WebService注释(不幸的是上面的示例不起作用).
最佳答案 虽然JAX-WS和JAX-RS注释可以很愉快地在相同的方法同居,我觉得很难相信这是精心调校与JAX-RS使用任何接口,可以很好的适用于JAX-WS,或副反之亦然.问题不是你不能这样做,问题是你不应该这样做;他们有一个不同的世界模型,一个不同的概念,它意味着什么是一个良好的界面.
但是如果你只是做一些像简单查找那样微不足道的事情,它确实可以工作:
@GET
@Path("foo/{id}")
@Produces("application/xml")
@WebMethod(operationName = "DescribeFoo")
@WebResult(name = "Description")
public DescriptionOfFoo getFooDescription(
@PathParam("id")
@WebParam(name = "fooId")
String id) {
return get_the.description_of(id); // Whatever...
}
我喜欢尽可能多地在界面上放置(检查你的框架文档如何使它们工作),因为这会将上面的部分(!!)可能的注释集减少到更合理的水平. (作为参考,当事情开始变得复杂并且您在非平凡模式中应用多个方面时,每个方法可以轻松获得超过20个注释,其中一些与您的实现相关,其中一些与一个或另一个相关.你的界面;分区促进了理智.)