我正在编写一个应该接受Object []类型的Web服务。它具有通用性,需要在不同场景下接受不同数量和类型的参数。
请求对象如下所示:
@XmlRootElement
public class SimilarityRequest {
private Object[] params;
private String similarity;
public Object[] getParams() {
return params;
}
public void setParams(Object[] params) {
this.params = params;
}
public String getSimilarity() {
return similarity;
}
public void setSimilarity(String similarity) {
this.similarity = similarity;
}
}
这是WebService:
@SessionScoped
@Path("/similarity/")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Stateful
@StatefulTimeout(600000) // 10 minutes
public class SimilarityResource {
@POST
@Path("/")
public List<SimilarityResult> universalSimilarity(JAXBElement<SimilarityRequest> sr) {
Object[] params = sr.getValue().getParams();
String similarity = sr.getValue().getSimilarity();
}
}
我不知道在这种情况下它接受params的json是什么?我尝试了"params":{5,10}
和"params":{"0":5,"1":10}
以及"params":[5,10]
。什么东西抛出500和400东西(坏请求)。有什么想法吗?
答案 0 :(得分:0)
我已经使用Jersey成功实现了该服务,代码是相同的,我刚刚删除了 JAXBElement 包装器和 @XmlRootElement 注释。 WEB-INF.xml文件必须包含包含 SimilarityRequest 类的文件夹 com.sun.jersey.config.property.packages 参数部分和 com.sun.jersey.api.json.POJOMappingFeature 参数必须为true。 该服务正确接收以下json:
{“相似性”:“测试”,“参数”:[5,10]}
对象数组包含两个Integer值。