Jena API与使用Jersey的REST webservice
我正在使用Jena API从Allegrograph服务器获取RDF数据。我已经使用Jersey jar编写了一个REST Web服务来获取这些数据 我的Web服务java代码如下所示:Jena API与使用Jersey的REST webservice,rest,tomcat,jersey,jena,Rest,Tomcat,Jersey,Jena,我正在使用Jena API从Allegrograph服务器获取RDF数据。我已经使用Jersey jar编写了一个REST Web服务来获取这些数据 我的Web服务java代码如下所示: @GET @Path("/JENA") @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public String getData() throws RepositoryException { AGGraphMak
@GET
@Path("/JENA")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public String getData() throws RepositoryException {
AGGraphMaker maker = new AGGraphMaker(conn);
AGGraph graph = maker.getGraph();
AGModel model = new AGModel(graph);
AGQuery agQuery = AGQueryFactory.create(query);
QueryExecution qe = AGQueryExecutionFactory.create(agQuery, model);
String result = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
ResultSet rs = qe.execSelect();
While(rs.hasNext()){
byteArrayOutputStream = new ByteArrayOutputStream();
if("JSON".equalsIgnoreCase(outputFormat)){
ResultSetFormatter.outputAsJSON(byteArrayOutputStream, rs);
result = byteArrayOutputStream.toString();
System.out.println("Result is "+result);
} else if("XML".equalsIgnoreCase(outputFormat)){
ResultSetFormatter.outputAsXML(byteArrayOutputStream, rs);
result = byteArrayOutputStream.toString();
}else if("CSV".equalsIgnoreCase(outputFormat)){
ResultSetFormatter.outputAsCSV(byteArrayOutputStream, rs);
result = byteArrayOutputStream.toString();
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
当我在Tomcat服务器上部署此web服务并在Chrome和firefox上使用REST客户端应用程序对其进行测试时,SPARQL查询没有得到任何结果
但是相同的代码在webservice代码和这个主方法代码中绝对没有区别。如果我在一个普通的java类中编写并运行它的主方法,我会得到36个结果。我不确定是什么问题
请在这方面帮助我。您需要将关注点分开: 将服务逻辑(实际查询Allegro graph的位)移动到一个单独的类中,以便正确封装它。类的API应该反映它在应用程序中的职责,而不是它目前的工作方式。 为服务类编写JUnit测试。这一点很重要—它使您确信您的服务正在正确地执行其工作,并在您开发应用程序时继续这样做。 编写Jersey方法来调用符合服务类API的任何服务对象。 编写一个或多个HTTPUnit或类似的测试来调用RESTAPI。理想情况下,您将使用模拟或双重测试,而不是实际的服务。您要测试的是HTTP请求是否到达了正确的方法,并且该方法使用正确的参数委托给服务对象。然后您将进行测试和调试!关注的问题较少。 使用小型功能单元时,最好清楚地了解它们的职责。而且你一定要学会应付考试——这是中期的一大胜利,即使这意味着提前多学一点