У меня есть веб-приложение jsp, servlet - контент-менеджер для цель, в котором пользователи могут регистрировать вопросы и ответы.Тогда система теоретически должна с помощью одной кнопки скомпилировать bd для прицеливания и создать бота.
Проблема в том, что даже при компиляции бота она не отвечает на новые вопросы.
Я использую Google AB для AIML в Java.
Папка бота находится внутри WEB-INF
Если я скомпилирую из tomcat, как если бы это было обычное Java-приложение, оно правильногенерирует файлы и отвечает на основе новых вопросов.
Если я запускаю компиляцию бота из сервлета, он выполняет компиляцию, но бот не использует новые вопросы и ответы.
Вопрос в том, что это не дает явной ошибки.
Вы совершенно правы.Я попытаюсь объяснить это лучше.
Я использую AB Google для компиляции и использования бота AIML в веб-приложении с jsp и servlet.
TOMCAT 8 и JAVA 8 какenvironment
<dependency>
<artifactId> com.google </ artifactId>
<groupId> Ab </ groupId>
<version> 0.0.4.3 </ version>
</ dependency>
каталог файлов ботов: WEB-INF / bots Когда я компилирую и выполняю в java файл aiml
public class AddAiml {
/ **
* @param args the command line arguments
* /
private static final boolean TRACE_MODE = true;
static String botName = "super";
public static void main (String [] args) {
try {
String resourcesPath = getResourcesPath ();
System.out.println (resourcesPath);
MagicBooleans.trace_mode = TRACE_MODE;
Bot bot = new Bot (botName, resourcesPath);
bot.writeAIMLFiles ();
} catch (Exception e) {
e.printStackTrace ();
}
}
private static String getResourcesPath () {
File currDir = new File (".");
String path = currDir.getAbsolutePath ();
path = path.substring (0, path.length () - 2);
System.out.println (path);
String resourcesPath = path + File.separator + "src" + File.separator + "main" + File.separator + "webapp" + File.separator + "WEB-INF";
return resourcesPath;
}
}
Это генерирует корректного бота, и я могу вызвать его позжев моем сервлете
protected void processRequest (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession (false);
if (session! = null) {
String action = request.getParameter ("url");
if (accion.equals ("chatbot")) {
ServletContext sc = session.getServletContext ();
BotUpo botUpo = new BotUpo (sc.getResource ("WEB-INF"). GetPath ());
session.setAttribute ("upobot", botUpo);
RequestDispatcher rd = sc.getRequestDispatcher ("/ admin / chatbot.jsp");
rd.forward (request, response);
}
}
}
Хорошо, здесь все в порядке.Я создал небольшой менеджер контента, где пользователи вводят вопросы и ответы.А в разделе администрации я добавил кнопку для перекомпиляции бота прицела.
ServletContext sc = getServletContext ();
String resourcesPath = sc.getResource ("WEB-INF"). GetPath ();
MagicBooleans.trace_mode = TRACE_MODE;
Bot bot = new Bot (botName, StringUtils.removeEnd (resourcesPath, "/"));
bot.writeAIMLFiles ();
После перекомпиляции бота он не может ответить ни на один вопрос.
Единственный вывод, чтопришло то, что проблема должна быть в том, что компиляция в веб-приложении tomcat не позволяет загружать эти файлы.