支持者,
我使用JERSEY作为JAX-RS WS,使用Jackson获取JSON并使用JAXB注释到XML。弹簧用于自动装配和冬眠作为orm。
春天是4.0.5 hibernate 4.2.13FINAL我使用@xmlrootelement注释获取了我的实体,注册了jacksonfeature,@ jsonManagedReference和@JsonBackReference以避免所有@onetomany和@manytoone中的无限递归..这只适用于检索无关系实体。
例如,用户实体非常简单,只有登录,密码...我可以在ajax调用中检索xml和json的用户列表
这是我对球衣依赖的pom:
<!-- Jersey RESTful -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.11</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>2.11</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.11</version>
</dependency>
<!-- Jersey RESTful -->
我的资源方法:
@GET
@Path("processo/{processo}")
@Produces({ MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
public Processo infoProcesso(@PathParam("processo") String processo){
return processoService.getProcesso(processo);
}
来自Processo实体的代码片段:
@Entity
@XmlRootElement(name = "processo")
public class Processo {
@Id
@GeneratedValue
private Long id;
.
.
.
@OneToMany(mappedBy="processo")
@JsonManagedReference
private List<Prioridade> prioridades = new ArrayList<Prioridade>();
}
来自Prioridade实体的代码片段:
@Entity
@XmlRootElement(name = "prioridade")
public class Prioridade {
@Id
@GeneratedValue
private Long id;
@ManyToOne
@JsonBackReference
private Processo processo;
}
当检索@onetomany关系实体时,我可以在tomcat控制台中看到SQL语句,但如果我在返回之前尝试使用println,它就不会显示(可能是某些配置问题,仍然没有设置log4j或其他)
说,当我从本地网络服务器(miniweb)运行这个ajax调用时:
$.ajax({
type: "GET",
url:"https://localhost:8443/pushrpi/processo/816101680",
dataType:"xml",
crossDomain: true,
headers: {
"Authorization": "Basic ZGVwb3NlY2xpZW50OmRlcG9zZWNsaWVudA=="
}
}).done(function(data){alert('1');});
我获得了OPTIONS响应,但是使用chrome的开发工具GET总是被取消(
)。您需要的任何其他信息?我没有得到错误,警告..没有回到tomcat控制台,最后&#34; log&#34;是SQL语句。
任何提示?
提前谢谢。 / fferrandini