0

UIが比較的小さな部分になるJavaで書かれたアプリケーションがあります。私たちは最新の消費者志向の UI を作成したいと考えており、Swing では私たちが求めていたものを提供できないという結論に達しました。熟慮の末、Vaadin を使用して UI を構築することにしました。このアプリケーションは Web 上で実行できませんが (p2p です)、Vaadin はすぐに使える流動的で見栄えの良いエクスペリエンスを提供してくれました。このため、アプリケーションには Vaadin に必要な WAR 構造がありません。

ユーザーのローカル Web ブラウザー (java.awt.Desktop.browse() を使用して起動します) に Vaadin UI を提供する小さな組み込み Web サーバーを作成するという考え方です。WAR 構造を既存のプロジェクトに埋め込む方法については、まだ問題があります。私たちのビルド ツールは Maven で、プロジェクトのソース コードを表示できます: https://github.com/sanity/tahrir

4

2 に答える 2

1

Jetty を埋め込むことができます:方法は次のとおりです。

例:

Server server = new Server(8080);
Context root = new Context(server,"/",Context.SESSIONS);
root.addServlet(new ServletHolder(new HelloServlet("Ciao")), "/*");
server.start();

WARを実行したい場合は、その方法の例を次に示します

関連するコードは次のとおりです。

server = new Server();
Connector connector = new SelectChannelConnector();
connector.setPort(PORT);
connector.setHost("127.0.0.1");
server.addConnector(connector);

WebAppContext wac = new WebAppContext();
wac.setContextPath("/");
wac.setWar("./web");    // this is path to the .WAR 
server.setHandler(wac);
server.setStopAtShutdown(true);
server.start();
于 2012-07-13T04:58:23.717 に答える
0

VaadinWeb アプリケーション フレームワークであり、Web アプリケーションは WAR 構造を持つことを期待します。

ここで、すべてのクラスを WEB-INF/lib または WEB-INF/classes に固執することを避けたい場合は、問題ありません。Jetty を組み込むことで、クラスパス上のすべてのクラスを特定の場所に貼り付けることなく使用できます。

ただし、Jetty 内で Web アプリケーションを構築および構成するには、かなりの作業を行う必要があります。WEB-INF/web.xml、VAADIN/themes などの他のすべての Web リソースを使用して、クラス パス上の JAR 内に WAR 構造を作成する (または兄弟 WAR を作成する) 最も簡単な方法を想像します。 WEB-INF/lib と WEB-INF/classes - これはあなたが避けようとしていると思います。

注、私はこれを自分で行ったことはありませんが、それが可能であり、抵抗が最も少ない方法であると信じています.

于 2012-07-13T08:24:16.480 に答える