我正在用Java编写程序来使用Sesame的服务,但是当我调用Login时:

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     try {

    URL sesameurl = new URL("http://localhost:8080/openrdf-sesame");
    SesameService service = Sesame.getService(sesameurl);
        service.login("username", "password");
        service.getRepositoryList();
               }
    catch (UnknownRepositoryException ex) {
        Logger.getLogger(Sparqlquery.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ConfigurationException ex) {
        Logger.getLogger(Sparqlquery.class.getName()).log(Level.SEVERE, null, ex);
    }        catch (AccessDeniedException ex) {
        Logger.getLogger(Sparqlquery.class.getName()).log(Level.SEVERE, null, ex);
    }
    PrintWriter write = response.getWriter();
}


它会引发以下错误:

HTTP Status 500 -


类型例外报告

信息

描述服务器遇到内部错误(),阻止其满足此请求。

例外

java.io.IOException:http://localhost:8080/openrdf-sesame/servlets/login:找不到

note注意在GlassFish Server Open Source Edition 3.1.1日志中,可以找到有关异常及其原因的完整堆栈跟踪。
GlassFish Server开源版3.1.1

最佳答案

我不确定您从何处获得此代码示例,但是芝麻2中不存在类SesameServiceSparqlqueryUnknownRepositoryException

您使用的是Sesame的非常旧的版本(1.x,从2007年起不再受支持,并且至少从2007年开始不支持),或者您使用的是第三方包装器库。

确保您使用的是芝麻的最新版本(可以在website上找到最新的稳定版本)。

连接到芝麻服务器的正确/当前方法如下:

 // connect to the server
 String serverUrl = "http://localhost:8080/openrdf-sesame";
 RepositoryManager manager = RepositoryProvider.getRepositoryManager(serverUrl);

 // get a list of the ids of all existing repositories
 List<String> ids = manager.getRepositoryIDs();

 // open a repository with a known identifier, e.g. "test"
 Repository rep = manager.getRepository("test");


等等。有关如何使用Sesame的更多详细信息,请参见Sesame website上可用的文档,尤其是tutorial,章节"Programming with Sesame"API Javadoc

09-05 21:38