2

GWT を使用する場合、次の URL 形式を使用します。

デバッグ:

http://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997#hash

編集済み:

http://127.0.0.1:8888/index.html#hash

基になる Rest API にアクセスできる必要があります。

「ルート」内でマッピングする必要があるもの

http://127.0.0.1:8888/{contentId}

ただし、これにより GWT アプリケーションへのアクセスが確実に中断され、アクセスできなくなります。

Rest API をルートに持つという主な要件を考慮して、これをどのように連携させることができますか?

web.xml

<?xml version="1.0" encoding="UTF-8"?>
       <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">


    <context-param>
        <param-name>resteasy.guice.modules</param-name>
        <param-value>org.jboss.errai.ui.demo.server.MyModule</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>Resteasy</servlet-name>
        <servlet-class>
            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
        </servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Resteasy</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

編集:

アイデアは、私は両方を行うことができるはずだということです:

http://127.0.0.1:8888/index.html#hash

http://127.0.0.1:8888/abc123

つまり、GWT サーブレットと Rest API の「サーブレット」の両方が同じサーバーと同じ webapp パスにデプロイされるため、「GWT サーブレット」と共存します。

4

1 に答える 1

0

明らかに、独自のサーブレットでルート コンテキストを処理する必要があります。基本的な考え方は、YourRoutingServlet を /* パスにマップし、リクエスト パス (gwt または rest) を分析して get/post およびその他の呼び出しを処理し、処理を適切なサーブレットに委任することです。

特定のアプリケーションに応じて、たとえば gwt サーブレット (RemoteServiceServlet) を拡張してリクエスト URL を確認し、これが gwt URL (#hash 付き) の場合はスーパー メソッドを呼び出し、そうでない場合は req/resp を残りのサーブレットに委任します。

これは、サーブレットに残りのサーブレットのインスタンスが必要か、サーブレットリダイレクトを使用できることも意味します(これはお勧めしません)。

于 2013-05-30T08:11:10.817 に答える