2

私の最終目標は単純です。私は、モバイルインターフェイス、管理Webインターフェイス、およびWebユーザーインターフェイスの3つのコンポーネントを持つWebサイトを構築しています。これらの各モジュールを個別のWARファイルに配置し、EJBモジュールおよび場合によっては共通ライブラリモジュールとともに、JBossAS7.1にデプロイするためにすべてをEARにバンドルする予定です。

しかし、まず最初に、非常に単純なWARファイルをデプロイして機能させることはできますか?いいえ!

私のwarファイルの構造は次のとおりです。

project-mobile.war:

   META-INF/MANIFEST.MF
   WEB-INF/jboss-web.xml
   WEB-INF/classes/org/dobbo/project/mobile/Accounts.class
   index.html

次のコンテンツとしてのmanifest.mfファイル:

  Manifest-Version: 1.0
  Ant-Version: Apache Ant 1.8.0
  Created-By: 1.6.0_18-b18 (Sun Microsystems Inc.)
  Built-By: steve

jboss-web.xmlファイルの内容は次のとおりです。

<?xml version="1.0"?>
<jboss-web>
  <context-root>/mobile</context-root>
</jboss-web>

Accounts.javaファイルは、 https://docs.jboss.org/author/display/AS71/Java+API+for+RESTful+Web+Services+(JAX-RS)のLibrary.javaの例に基づいています 。変更により、Applicationサブクラス化とAppicationPathアノテーションが追加されました。これにより、デプロイメントを機能させることができました。

package org.dobbo.<project>.mobile;

import javax.ws.rs.*;
import javax.ws.rs.core.Application;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@ApplicationPath("/accounts")
@Consumes({"application/xml"})
@Produces({"application/xml"})
public class Accounts
    extends Application {

    ...

    @GET
    @Path("/list")
    public Collection<UUID> getAccounts() {
    Collection<UUID> list = uuids.values();

    log.info("getAccounts: " + list);
    return list;
    }

    ...
}

ここまでは順調ですね。

デプロイすると、JBossコンソールに以下が記録されます(タイムスタンプとログレベルのINFOが削除されます)。

[org.jboss.as.repository] (management-handler-thread - 12) JBAS014900: Content added at location /home/jboss/jboss-7.1.1/standalone/data/content/11/e8cdaea9dfa4e984ada3e22b0c890970f0ba75/content
[org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment sokoban-mobile.war in 60ms
[org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "project-mobile.war"
[org.jboss.web] (MSC service thread 1-2) JBAS018210: Registering web context: /mobile
[org.jboss.as.server] (management-handler-thread - 12) JBAS018565: Replaced deployment "project-mobile.war" with deployment "project-mobile.war"

これまでのところ、すべてが順調に見えます。しかし、ブラウザでjboss-server:8080 / mobile / accounts / listを指定すると、次のようになります。

HTTP Status 404 - Could not find resource for relative : /list of full path: http://jboss-server:8080/mobile/accounts/list

type Status report

message Could not find resource for relative : /list of full path: http://jboss-server:8080/mobile/accounts/list

description The requested resource (Could not find resource for relative : /list of full path: http://jboss-server:8080/mobile/accounts/list) is not available.

ただし、ブラウザをjboss-server:8080 / mobile /にポイントすると、WARファイルにも含まれているindex.htmlファイルが正常に返されるため、何かが機能しています。

これはおそらく私の側の単純な構成エラーですが、私は一生それを解決することができません。この問題を読むのに苦労してくれたすべての人に感謝し、あなたが持っているアイデアを投稿してくれてさらに感謝します。

スティーブ

4

1 に答える 1

1

ログには、RESTリソースがロードされていないことが示されています。

リソースに@Path注釈がありません。

Applicationアノテーション付きのクラスが必要です@ApplicationPath(クラスは空になります)。

@Path次に、リソースクラスにアノテーションを追加する必要があります(Accountsあなたの場合)

だからあなたは持っているでしょう:

@ApplicationPath("/")
public class AccountApp
    extends Application {}

と:

@Path("accounts")
@Consumes({"application/xml"})
@Produces({"application/xml"})
public class Accounts{

    ...

    @GET
    @Path("/list")
    public Collection<UUID> getAccounts() {
    Collection<UUID> list = uuids.values();

    log.info("getAccounts: " + list);
    return list;
    }

    ...
}
于 2012-10-18T16:51:54.250 に答える