2

Glassfish と Jersery で動作する Atmosphere チャット プログラムの簡単な例を取得しようとしています。

これまでのところ、次の構造を持つ基本的な Maven webapp アーキタイプがあります。

プロジェクトのセットアップ

チャット リソース ファイルは、Atmosphere アノテーションを使用した単純な REST サービスです。

package core;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import org.atmosphere.annotation.Broadcast;
import org.atmosphere.annotation.Suspend;

@Path("/")
public class ChatResource {

    @Suspend(contentType = "application/json")
    @GET
    public String suspend() {
        return "";
    }

    @Broadcast(writeEntity = false)
    @POST
    @Produces("application/json")
    public Response broadcast(Message message) {
        return new Response(message.author, message.message);
    }
}

メッセージと応答のクラスは単純な POJO ラッパーです。index.jsp、application.js、jquery.atmosphere.js、および jquery.js は、サンプル プロジェクト (ここにあります) から直接コピーされます。

私のweb.xmlは次のように設定されています:

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

    <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <description>AtmosphereServlet</description>
        <servlet-name>AtmosphereServlet</servlet-name>
        <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>AtmosphereServlet</servlet-name>
        <url-pattern>/chat/*</url-pattern>
    </servlet-mapping>
</web-app>

ページに移動すると、次のエラーが表示されます。

申し訳ありませんが、ソケットに問題があるか、サーバーがダウンしています

ページがアクセスしようとしているパス ( http://localhost:8080/.../chat ) に移動すると、次のメッセージが表示されます。

org.atmosphere.cpr.AtmosphereMappingException: AtmosphereHandler が見つかりません。META-INF/atmosphere.xml 内で定義するか、@AtmosphereHandlerService を使用して注釈を付けてください。

ファイルまたはセットアップ構成が欠落しているに違いありませんが、どこを見つけることができないようです (上記のメッセージは、atmosphere.xml が欠落していると言っていますが、これは例には表示されません)。どんな助けでも大歓迎です。

4

1 に答える 1

3

デフォルトでは、Web ソケット プロトコルは Glassfish で有効になっていません。

次のコマンドで有効にできます。

asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled=true

これは、接続を機能させるために必要なものです。

于 2012-10-24T19:59:51.327 に答える