2013-08-06 2 views
0

Я хочу запустить JADE-интерфейс промежуточного ПО из JSP, для этого я создал «Динамический веб-проект» и сделал правый щелчок на папке WebContent и выбрал «Создать». Другой файл JtyP.type и дал название, например runJADE.jsp. Теперь добавьте следующие детали внутри runJADE.jspПочему несколько JADE GUI появляются на обновляемой странице JSP

<%@ page import="jade.core.*"%> 
<% try { 
    String [] _args = {"-gui"}; 
    jade.Boot.main(_args); 
    } catch (Exception ex) { 
     out.println(ex); 
     ex.printStackTrace(); 
    } 
%> 

<HTML> 
<BODY> 
JADE is running. 
</BODY> 
</HTML> 

Я также попытался следующий код в JSP странице:

<%@ page import="jade.core.Profile,jade.core.ProfileImpl,jade.core.Runtime,jade.wrapper.AgentContainer %> 
<% try { 
     Profile profile = new ProfileImpl(); 
     profile.setParameter(Profile.GUI, "true"); 
     AgentContainer mainContainer = Runtime.instance().createMainContainer(profile); 
    } catch (Exception ex) { 
     out.println(ex); 
     ex.printStackTrace(); 
    } 
%> 

<HTML> 
<BODY> 
JADE is running. 
</BODY> 
</HTML> 

код дает прекрасный результат, запустив JADE, но обновление страницы приводит создать другой GUI. Я пропустил какой-то базовый шаг? и как избежать этой проблемы?

ответ

0

Ваш подход глубоко испорчен. Каждый раз, когда вы загружаете JSP, он создает другой контейнер Jade. При использовании Jade вы обычно хотите иметь только один контейнер на одной машине.

Лучшим подходом будет запуск вашего контейнера при запуске всего приложения. Затем, когда вы хотите, чтобы вызвать Джейд GUI, вы должны просто запустить агент RMA внутри контейнера Джейд, как описано в этом ответе: https://stackoverflow.com/a/20462656/2047962


Теперь, давайте сделаем шаг назад и поговорить о вашем коде. Я настоятельно рекомендую вам прекратить использование сценариев в ваших JSP RIGHT NOW. Это плохая практика, которая ведет к действительно плохим проектам. Если вы не знаете альтернативы, прочитайте «How to avoid Java code in JSP files?».

Во-вторых, почему вы смешиваете веб-приложения и рабочий интерфейс Swing UI? Почему вы открываете графический интерфейс Swing, когда кто-то обращается к вашей веб-странице в браузере? Если бы вы развернули это приложение, ваши клиенты попали бы на страницу с надписью «JADE», но они ничего не увидели. GUI откроется на сервере, а не на клиенте. Я не понимаю, почему вам нужна эта функциональность в веб-среде.