問題タブ [sitebricks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1864 参照

java - JSON Web API を使用する適切に型付けされた Scala (または Java) ライブラリはありますか?

JSON REST APIでGET/PUT/POST/DELETEなどを簡単に実行し、タイプセーフな方法でJSON応答をJavaオブジェクトに逆シリアル化できるJava(またはScala)用のシンプルなRESTクライアント・ライブラリが必要です。

基本的に、GET リクエストを実行し、JSON レスポンスをタイプの POJO に逆シリアル化するget()など 、一般的な署名をこのようなものにしたいと考えています。public <T> T get(String path, Class<T> responseClass)responseClass

サイトブリックと呼ばれるものにかなり近いライブラリを見つけましたが、その範囲が大幅に制限されています。たとえば、PUT/PATCH/DELETE などのより一般的でない HTTP 動詞を実行できず、ヘッダーを設定する方法がありません。リクエストの本文でさえ。

私が見つけた別のライブラリには反対の問題があります.basicauthを行う方法がなく、JSONをオブジェクトにシリアライズしません.

0 投票する
2 に答える
643 参照

sitebricks - Sitebricks で post/get パラメータをデシリアライズする

Sitebricks では、次のように Sitebricks@Serviceメソッドで JSON 形式の params からクラスを簡単に逆シリアル化できます。

しかし、get/post パラメーターからクラスを逆シリアル化するにはどうすればよいですか?

Requestオブジェクトが params ( ) にアクセスできることはわかっていますがrequest.params()、もっと手間がかかります。

0 投票する
1 に答える
1873 参照

java - 4xx / 5xxステータスコード、Javaサーブレット/HttpURLConnectionを使用してHTTP応答を処理する方法

私のJavaサーブレットでは、エラーを示すHTTPステータスコードを返したい場合があり、返されたステータスコードに基づいてクライアントが応答を読み取って処理できるようにしたい場合があります。たとえば、私のアプリケーションは、Google AppEngineJavaランタイムのチャネルAPIを扱います。要求しているクライアントIDがまだチャネルのトークンを要求していない場合、サーブレットは403ステータスコードを返し、クライアントはそれに応じて応答を処理します(サーブレットからすぐにトークンを要求します)。

ただし、クライアントがHttpURLConnectionを使用してHTTP応答を読み取る場合。入力ストリームから応答を読み取ることができる代わりに、この素​​敵なスタックトレースがスローされます。

この投稿を書いているときに、接続から失敗を意味するステータスコードを読み取った場合、接続の入力ストリームから読み取るべきではないのではないかと思い始めました。とにかく、私は他の人がこれについてどう思うか聞いてみたいです。


ノート

私のサーブレットはSitebricksを使用して、リッスンするRESTエンドポイントをメソッドに提供します。また、Sitebricksを使用すると、次のように応答とステータスコードを送信できます。

0 投票する
2 に答える
554 参照

google-app-engine - Sitebricks and Channel Presence Service(GAE); また、通常のサーブレットに問題があります

Java Google App Engineサーバーアプリケーションで、チャネルAPIを使用してチャネルとの接続/切断を追跡するためにチャネルプレゼンスサーブレットを有効にします(ここでWEB-INF/appengine-web.xml説明します。説明したようにファイルを編集しました。

アプリケーションのほとんどのサーブレットは、 HttpServletを拡張するクラスではなく、 Sitebricksを使用して、アプリでRESTエンドポイントを作成する簡単な方法を提供します。しかし、私のクラスでSitebricksを使用しているようですがWARNING: No file found for: /_ah/channel/connected/、URLがヒットしたときに取得するため、機能しません。

Sitebricksを使用してRESTURLエンドポイント、チャネルプレゼンス、/-ah/channel/connected/およびを提供する方法はあり/_ah/channel/disconnected/ますか?

ボーナス質問

Sitebricksが進むべき道ではなく、代わりに、をextends HttpServlet介して構成されている通常のサーブレットクラスに固執する必要があるとしましょうWEB-INF/web.xml。この他の解決策はまだ私には機能しません。これをweb.xmlファイルに入れるとしましょう。

この例では、com.example.PresenceServletはHttpServletの子であり、親からのdoPost(HttpServletRequest、HttpServletResponse)メソッドをオーバーライドします。私はまだ問題に遭遇します:

すべてが大いに感謝するのに役立ちます。特にGoogleの従業員から。

PS: GAE SDK 1.7.2を使用しています。1.7.3のリリースを待ち望んでいます)


アップデート

私が試したもう1つの実験がありました。サーブレットクラスのweb.xmlの<servlet>タグに、サーバーの起動時にサーブレットを強制的にロードするためにこのタグを追加しました(ちなみに、これはmvn gae:run私の例で使用しています)。今、私はこの出力を取得します

0 投票する
2 に答える
185 参照

rest - JSON 経由で複数のオブジェクトを sitebricks クライアントから sitebricks REST Service に送信する方法は?

Sitebricks クライアントから Sitebricks サービスに 2 つ以上のオブジェクトを同時に送信することは可能ですか?

たとえば、PersonオブジェクトとJobApplicationオブジェクトがあります。私はこのようなことをすることができます:

0 投票する
3 に答える
95 参照

java - Sitebricks の公式 javadoc (0.8.6)

Sitebricks の公式 Javadoc (私の場合はバージョン 0.8.6) はどこにありますか? Google Code PageにもSitebricks.orgにも何もありません。私が見つけた最も近いものは Jarvana ( http://www.jarvana.com/jarvana/doc?search_type=javadoc_project&project=sitebricks ) でしたが、これは私が探しているものとはかけ離れています。Google の公式なものを使用したい。

0 投票する
2 に答える
285 参照

java - Sitebricks JSON の既定のシリアライザー。また、application/json ではなく text/json を返すのはなぜですか

うーん...1つだけ質問するつもりでした。だけど一石二鳥と決めた。

最初の質問: Sitebricks は、Java POJO と JSON の間のデフォルトのシリアライザー/デシリアライザーとして何を使用しますか? たとえば、これが私の POJO だとしましょう。

これは、私の Sitebricks サーブレットのメソッドの例です。

Jacksonアノテーションを付けMyObjectたり、コードのどこにもGSONを使用したりしませんでした。しかし、驚いたことに、応答のコンテンツ本文として次の内容が返されます。

したがって、私が知りたいのは、Sitebricks が JSON をシリアライズ/デシリアライズするためにデフォルトで使用しているテクノロジまたはフレームワーク、またはその他のものです。ジャクソン?GSON? 魔術と魔術?

次に、2 番目の質問です。ヘッダーで、レスポンスのContent-Typetext/json. 私の過去の経験では、私は常にapplication/jsonJSON の Content-Type として扱ってきたので、これは私には奇妙に見えました。このStackoverflow の投稿は、私の信念を裏付けるものです。この点について何かコメントはありますか?

前もって感謝します!

0 投票する
2 に答える
256 参照

java - Sitebricksで例外を報告するための一貫したJSON応答の送信

私は、GoogleSitebricksで多数のRESTエンドポイントを提供するWebアプリを開発しています。重複/類似コードを最小限に抑えるために、RESTエンドポイントで実行されたコードが例外をスローするたびに一貫したReplyオブジェクトで応答するようにsitebricksを構成したいと思います。

例外を処理して各エンドポイントでカスタムJSON応答を作成する代わりに、sitebricks自体が例外をキャッチして、次のようなものを返すようにします。

次に、Sitebricksは、上記の構造を作成し、たとえば注釈に基づいてステータスコードやその他のフィールドに入力する責任があります。

  • これを自分で作成する必要がありますか、それとも他の誰かがすでに作成していますか?たぶん、Sitebricks自体でこれを行う方法さえありますか?
  • ジャージーのExceptionMapperインターフェースに相当するものはありますか?
0 投票する
1 に答える
218 参照

java - SitebricksはGAEバックエンド(Java)と互換性がありますか

Sitebricksを使用してGoogleAppEngineバックエンドサーブレットをホストできるかどうか知りたいのですが。私はGAEJavaアプリでそうしようとしています-フロントエンドはGAEのBackendServiceインターフェースを使用してバックエンドURLを取得し、HTTPリクエストを送信します-しかし、HTTP応答は常に404 Not Foundで返されます)。

いくつかのソースコード/構成ファイルを投稿したいのですが、自分が何をしているのかを説明するのが最善かもしれないと思いました。基本的に、私のサーブレットは、完全に機能しているフロントエンドサーブレットとまったく同じ方法でSitebricksを使用して構成されています(つまり、サーブレットクラスとメソッドでのアノテーションとアノテーションを使用し@Service、さらにアプリのグローバルGuiceインスタンスで構成します)。backends.xmlで適切に構成された動的バックエンドインスタンスを使用しています。@At@GetSitebricksModuleInjector

SitebricksGAEバックエンドをペアリングするためのヒントはありますか?

0 投票する
1 に答える
935 参照

google-app-engine - Java GAE バックエンド サーブレットでの Guice インジェクションの使用

私の GAE Java アプリにはジレンマがあります。GAE バックエンドによって処理されるサーブレットを作成しようとしていますがサーブレットのすべてのフィールドを開始するためにGuice 依存性注入も使用する必要があります。私は複数のアプローチを試しましたが、どれも私のためにトリックをしているようには見えません。

私は最初にサーブレットでSitebricksを使用しようとしましたが、そうすると、バックエンド URL が照会されているときに、GAE がクラスを正当なサーブレットとして検出できなくなるようでした: 404 Not Foundがバックエンドから常に返されます。それにもかかわらず、同じ URI パスがフロントエンド インスタンスで正常に機能するため、クラスが Sitebricks アノテーションで正しくアノテーション付けされていることは確かです。

次に、Guice Servlet Extensionを使用してみました(このリンクを参照)。global を作成するクラスでは、次のInjectorバインディングを使用しました。

残念ながら、Sitebricks とまったく同じ問題が発生します。バックエンドでは 404 エラーが返されますが、フロントエンドでは返されません。

実行可能な最後のアプローチは、 でサーブレット マッピングを構成することweb.xmlです。伝統的なアプローチ。これにより、最終的にバックエンドが URI マッピングを検出できるようになります (これは、Google の Java GAE バックエンドのドキュメントに書かれている内容に従っています: 「バックエンドは、web.xml で定義されたサーブレットをメイン アプリケーション バージョンと共有します。」 )。残念ながら、この手順を使用して Guice インジェクションを利用することはできないため、使用することは非常に望ましくありませんweb.xml

2 番目と 3 番目のアプローチを組み合わせてみました。Guice サーブレット拡張機能と web.xml の両方を使用します。これにより、バックエンドから次のエラーで 500 エラーが返されました。

最後に 1 つ注意してください: backends.xmlファイルを構成して<public>true</public>. BackendServiceまた、フロントエンド インスタンスが( javadoc here )を使用してバックエンド アドレスを適切に取得していることにも注意してください。

以前に尋ねたその他の関連する Stackoverflow の質問