Hi,
I'm working for the first time with JSP & servlets, I've developed a servlet
that uses Jess to import an ontology (from JessTab/Protege) and apply to
this some inference rules...
My problem is that the servlet run without errors printing out the facts in
the KB...but when I try to turn the servlet in JSP the servlet run but
without print out anything...
Antonino Lo Bue
ICAR-CNR research fellow
Palermo (Italy)
Here is code:
SERVLET IMPLEMENTATION (works fine):
__________________________
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import jess.*;
import se.liu.ida.JessTab.*;
import edu.stanford.smi.protege.*;
import edu.stanford.smi.protegex.owl.*;
import java.util.*;
public class servletHyperComp extends HttpServlet{
public void doGet (HttpServletRequest request, HttpServletResponse
response)
throws IOException, ServletException, FileNotFoundException {
//Richiama i servletContext dal file web.xml
ServletContext servletContext = getServletContext();
//Imposta la working dir dell'istanza di Protégé
String protegeDir = servletContext.getInitParameter("protegedir");
String tomcatDir = System.getProperty("catalina.home");
System.setProperty("protege.dir", tomcatDir+protegeDir);
response.setContentType("text/html");
//Inizializza i file di input ed il motore Rete
String rulesFile = servletContext.getInitParameter("rulesfile");
String functionsFile = servletContext.getInitParameter("functionsfile");
String xsltFile = servletContext.getInitParameter("xsltfile");
String projectFile = servletContext.getInitParameter("projectfile");
/*istanzia un solo engine da condividere
if(servletContext.getAttribute("engine")==null) { */
try{
Rete engine= new Rete(this);
engine.addUserpackage(new JessTabFunctions());
if ( new File(projectFile).exists())
engine.executeCommand("(load-project " + projectFile +")");
servletContext.setAttribute("engine", engine);
PrintWriter out = response.getWriter();
engine.addOutputRouter("page",out);
// new Batch().batch(rulesFile, engine);
String batch1;
batch1="(batch "+rulesFile +")";
String batch2;
batch2="(batch "+functionsFile +")";
String batch3;
batch3="(batch "+xsltFile +")";
engine.executeCommand(batch1);
engine.executeCommand(batch2);
engine.executeCommand(batch3);
print("<html>", engine);
print(" <head>", engine);
print(" <title>Hello Nino from JESS!</title>", engine);
print(" </head>", engine);
print(" <body>", engine);
print(" <h1>Hello Nino!</h1>", engine);
print(" <p>", engine);
//Stampa i fatti della lista
for (Iterator e = engine.listFacts();
e.hasNext();) {
Object t = e.next();
print(t.toString(), engine);
}
print(" </p>", engine);
print(" </body>", engine);
print("</html>", engine);
}
catch (Exception je){
throw new ServletException(je);
}
return;
}
private void print(String message, Rete engine)
throws JessException {
engine.executeCommand("(printout page\""+message +"\"crlf)");
}
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws IOException, ServletException{
doGet(request, response);
}
}
JSP IMPLEMENTATION:
BaseServlet class:
_____________
import jess.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public abstract class BaseServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse
response)
throws IOException, ServletException {
doGet(request, response);
}
protected void checkInitialized() throws ServletException {
ServletContext servletContext = getServletContext();
String rulesFile = servletContext.getInitParameter("rulesfile");
String factsFile = servletContext.getInitParameter("factsfile");
if (servletContext.getAttribute("engine") == null) {
try {
Rete engine = new Rete(this);
engine.executeCommand("(batch \"" + rulesFile + "\")");
engine.reset();
if (new File(factsFile).exists())
engine.executeCommand("(load-facts \"" + factsFile +
"\")");
servletContext.setAttribute("engine", engine);
} catch (Exception je) {
throw new ServletException(je);
}
}
}
protected void dispatch(HttpServletRequest request,
HttpServletResponse response,
String page)
throws IOException, ServletException {
ServletContext servletContext = getServletContext();
RequestDispatcher dispatcher =
servletContext.getRequestDispatcher(page);
dispatcher.forward(request, response);
}
}
**********************
HyperContainer servlet class:
______________________
package hyperJessGen;
import javax.servlet.*;
import javax.servlet.http.*;
import jess.*;
import se.liu.ida.JessTab.*;
import edu.stanford.smi.protege.*;
import edu.stanford.smi.protegex.owl.*;
import java.io.*;
import java.util.Iterator;
public class HyperContainer extends BaseServlet{
public void doGet (HttpServletRequest request, HttpServletResponse
response)
throws IOException, ServletException {
//inizializza la servlet
checkInitialized();
try{
//ottiene lo userId
String userId = (String) request.getParameter("userId");
if (userId == null || userId.length() == 0) {
dispatch(request, response, "/index.html");
return;}
//cancella le precedenti sessioni e ne crea una nuova
request.getSession().invalidate();
HttpSession session = request.getSession();
session.setAttribute("userId", userId);
ServletContext servletContext = getServletContext();
Rete engine = (Rete) servletContext.getAttribute("engine");
request.setAttribute("engine", engine);
} catch (Exception je) {
throw new ServletException(je);
}
dispatch(request, response, "/hyperContainer.jsp");
}
}
**************
hyperContainer.jsp :
______________
<HTML>
<%@ page
import="jess.*,java.util.*,se.liu.ida.JessTab.*,edu.stanford.smi.protege.*,e
du.stanford.smi.protegex.owl.*" %>
<jsp:useBean id="engine" class="jess.Rete" scope="request"/>
<head>
<title>Results facts from HyperJessGen</title>
</head>
<body>
<h1>Results facts from HyperJessGen</h1>
<p>
<% engine.addOutputRouter("page", out);
for(Iterator e =engine.listFacts(); e.hasNext();){
Object t =e.next();
String fact = t.toString();
engine.executeCommand("(printout page \""+fact+"\" crlf)");
}
engine.executeCommand("(printout page " + "\"Hello World from Jess via
JSP & Servlet!\" crlf)");
%>
</p>
</body>
</HTML>
--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------