0

我想从 JSP 运行 JADE 中间件 GUI,为此我创建了一个“动态 Web 项目”并右键单击 WebContent 文件夹并选择 New .. Other ..type JsP 文件并命名为例如 runJADE.jsp。现在在 runJADE.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。我错过了一些基本步骤吗?以及如何避免这个问题?

4

1 回答 1

0

您的方法存在严重缺陷。每次加载 JSP 时,它都会创建另一个 Jade 容器。使用 Jade 时,您通常只想在一台机器上拥有一个容器。

更好的方法是在整个应用程序启动时启动容器。然后,当您想触发 Jade GUI 时,您应该在 Jade 容器内启动 RMA 代理,如以下答案所述:https ://stackoverflow.com/a/20462656/2047962


现在,让我们退后一步,谈谈你的代码。我强烈建议您立即停止在 JSP 中使用 scriptlet。这是一种糟糕的做法,会导致非常糟糕的设计。如果您不知道替代方案,请阅读“如何避免 JSP 文件中的 Java 代码? ”。

其次,您为什么要混合使用 Web 应用程序和桌面 Swing UI?当有人在浏览器中访问您的网页时,您为什么要打开 Swing GUI ?如果您要部署该应用程序,您的客户将进入一个显示“JADE 正在运行”的页面,但他们什么也看不到。GUI 将在服务器上打开,而不是在客户端上。我不明白您为什么希望在 Web 环境中使用此功能。

于 2015-10-19T15:32:03.220 回答