我有一个服务层,我想将其转换为Web服务。但是我讨厌使用注释,因为它们严重限制了我的公共基类中的代码可重用性。一些web服务使用对象的子集,我不希望一个服务暴露的东西暴露给另一个服务。
我遇到了与hibernate相同的问题,但是hbm xml映射允许我共享相同的域对象并为不同的服务提供不同的映射,这非常有用。是否有任何类型的Java web服务框架允许我用xml描述我的api和scheme对象,并且还能获得将这些对象转换为json / xml等的好处?
答案 0 :(得分:0)
您可以在基于XML的WADL中描述您的网络服务,然后使用CXF's wadl2java tool生成您的代码。请注意,WADL尚未被广泛采用,因此您必须决定合同优先REST服务对您的重要性。
答案 1 :(得分:0)
Spring Web Services是另一个基于XML for Web Services发布的无注释框架。你应该试一试
答案 2 :(得分:0)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB 2 (JSR-222)专家组的成员。
EclipseLink JAXB(MOXy)有一个扩展,允许您将元数据表示为XML文件。您可以使用ContextResolver在JAX-RS环境中利用此元数据:
package blog.bindingfile.jaxrs;
import java.io.*;
import java.util.*;
import javax.ws.rs.Produces;
import javax.ws.rs.ext.*;
import javax.xml.bind.*;
import org.eclipse.persistence.jaxb.JAXBContextFactory;
import blog.bindingfile.Customer;
@Provider
@Produces({"application/xml", "application/json"})
public class CustomerContextResolver implements ContextResolver<JAXBContext> {
private JAXBContext jc;
public CustomerContextResolver() {
Map<String, Object> props = new HashMap<String, Object>(1);
props.put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY, "blog/bindingfile/binding.xml");
jc = JAXBContext.newInstance(new Class[] {Customer.class} , props);
}
public JAXBContext getContext(Class<?> clazz) {
if(Customer.class == clazz) {
return jc;
}
return null;
}
}
了解更多信息
相关的Stack Overflow问题