5

Google App Engine (1.8.5) プロジェクトがあります。Webjarsを介して静的な Javascript と CSS を提供したいと思います。ただし、HTTP 404エラーが発生し続けます。Webjars ファイルにアクセスできるようにするにはどうすればよいですか?

私のGoogleのドキュメントsrc/main/webapp/WEB-INF/appengine-web.xmlごと:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    ...
    <static-files>
        <include path="/resources/**" />
        <include path="/webjars/**" />
    </static-files>
</appengine-web-app> 

src/main/webapp/index.htmlWebjars が提供するBootstrap CSS ファイルを参照するMy :

<html>
<head>
    <link rel="stylesheet" href="webjars/bootstrap/3.0.0/css/bootstrap.min.css">
</head>
...
</html>

のスニペットpom.xml:

    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>(lots)</artifactId>
        <version>1.8.5</version>
    </dependency>
    <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>4.0-beta</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <scope>provided</scope>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>3.0.0</version>
    </dependency>

これは私の最初の GAE 投稿の質問なので、どのような追加情報を提供すればよいかわかりません。優しくしてください。

4

4 に答える 4

2

残念ながら、Webjars には Servlet 3.x コンテナが必要ですが、Google App Engine は現在まだバージョン 2.5 のみです。

GAE の問題リストでこの問題にスターを付けることができます。

于 2013-10-18T17:09:05.440 に答える
1

私は最終的に実際に動作する回避策を得ました!私はRESTletでそれをしました。私はあなたが非restletアプリでそれを行うことができ、このビットのためにrestletを使うことができると思います.

restlet を使用する場合は、これをルーターに貼り付けるだけです。

final Component component = new Component();
component.getClients().add(Protocol.CLAP);
final Directory dir = new Directory(component.getContext(), "clap://class/META-INF/resources/webjars");
dir.setDeeplyAccessible(true);
this.attach("/webjars", dir);
//access via http://example.com/webjars/jquery/1.9.0/jquery.min.js

restlet を使用しない場合は、restlet サーブレット アダプターを web.xml に追加し、上記を使用して restlet アプリケーションとルーターを作成する必要があります。数行のコードを追加するだけです!

私のブログの詳細: http://demeranville.com/using-webjars-without-servlet-3-on-google-app-engine-gae/

于 2014-01-16T21:59:42.143 に答える
1

それは簡単にできます。サーブレット 2.x コンテナーでも。

webjars-servlet-2.x Maven 依存関係を Web アプリケーションに登録します。

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>webjars-servlet-2.x</artifactId>
    <version>1.1</version>
</dependency>

web.xml に WebjarsServlet を登録します。

<!--Webjars Servlet-->
<servlet>
    <servlet-name>WebjarsServlet</servlet-name>
    <servlet-class>org.webjars.servlet.WebjarsServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>WebjarsServlet</servlet-name>
    <url-pattern>/webjars/*</url-pattern>
</servlet-mapping>

デフォルトでは、Webjars リソースはブラウザによってキャッシュされます。何らかの理由でキャッシュを無効にする必要がある場合は、次のように disableCache 構成プロパティを使用して無効にすることができます。

<!--Webjars Servlet-->
<servlet>
    <servlet-name>WebjarsServlet</servlet-name>
    <servlet-class>org.webjars.servlet.WebjarsServlet</servlet-class>
    <init-param>
        <param-name>disableCache</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>WebjarsServlet</servlet-name>
    <url-pattern>/webjars/*</url-pattern>
</servlet-mapping>

詳細については、http: //www.webjars.org/documentation#servlet2 を参照してください。

于 2016-06-25T09:48:23.233 に答える
0

webjars は現在、サーブレット 2 のレガシー サポートを提供しているようです http://www.webjars.org/documentation#servlet2

于 2015-05-12T21:18:37.173 に答える