2017-06-09 6 views
1

私はJavaEEのもの、特にRESTEasyを使い始めました。私は、mavenでパッケージ化された小さなサービスをまとめようとしています。サービスが完了し、earパッケージが作成され、WildFly 10サーバーに展開されます。エラーはありませんが、サービスメソッドに到達/呼び出すことができません。JavaEEアプリケーションは、ブラウザ経由でRESTEasyサービスのURLにアクセスできますか?

私はここで多くの質問と回答を行い、それらに応じて私のアプリが動作し、私はそれを呼び出すことができるはずです。私が知りませんし、アプリケーションに到達するためのURLがどのように作成されているかについてのドキュメントはまだありません。

ここでの主な質問:このURL作成のルールは何ですか?どこで見つけることができますか?

これまでのところ、私は次のパラメータがURLに影響を与えることができます見てきました:

  • warファイル名(1、(元はSNAPSHOT文字列、または残りのプロジェクトのPOMで定義されてfinalNameパラメータで終わります。 xmlまたはearパッケージのpom.xml内のbundleFileName?warファイルが耳にパッケージ化されている場合、warファイル名は重要ですか?)
  • earプロジェクトのpom.xmlに定義されているコンテキストルート値です(application.xmlファイル)
  • RestEasyのアプリケーションクラスに対する@ApplicationPathアノテーション
  • web.xmlがどの
  • @Pathのサービスクラスを超える値やメソッド

のは、自分のアプリケーションを見てみましょうがある場合。

私のアプリは3つのモジュールで構成されています。メインモジュール(pomモジュール)には2つのモジュール、earパッケージモジュール、b、rest APIモジュールがあり、warファイルが作成されます。 Pom.xmlファイルは以下のとおりです。

Mavenのモジュール

  • ポンポンモジュールは何もしません。
  • earモジュールはearファイルをまとめ、重要なことに、warファイルの名前をMasterData.Rest.Api.warに変更します。
  • 残りのapi Webモジュールはwarファイルを生成します。

結局、EARファイルは次のようになります。

  • Masterdata.Dataservice.ear
  • Masterdata.Dataservice.ear/MasterData.Rest.Api.war

web.xmlファイルはなく、jboss.xmlファイルもありません。

通貨/通貨の方法は、以下のURLを使用して利用可能であるべきいくつかの記事や例(それらのいずれも作業)によると:ただ単に

warファイルのデプロイもうまくいきません。デフォルトでは、このファイルのファイル名はdigitallibrary.dataservice.masterdata.rest.api-1.0-SNAPSHOT.warです。展開を成功した後のエンドポイントは、ここでは利用可能であるべきである:それは動作しません

Wildflyは、次のことを言うと、アプリケーションは、次のURL(私はただ...推測している)が、それらのどちらも作業を介してアクセスすることができることを意味します...

Wildflyの展開ログ。

19:58:17,673 INFO [org.jboss.as.server.deployment] (MSC service thread 1-5) WFLYSRV0027: Starting deployment of "MasterData.Dataservice.ear" (runtime-name: "MasterData.Dataservice.ear") 
19:58:17,682 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) WFLYSRV0207: Starting subdeployment (runtime-name: "MasterData.Rest.Api.war") 
19:58:17,712 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 111) WFLYUT0021: Registered web context:/
19:58:17,727 INFO [org.jboss.as.server] (DeploymentScanner-threads - 1) WFLYSRV0010: Deployed "MasterData.Dataservice.ear" (runtime-name : "MasterData.Dataservice.ear") 

サーバーは実行中で、エラーはありません。

:application.xmlファイルを生成

package app; 

import endpoints.CurrencyEndpoint; 

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 
import java.util.HashSet; 
import java.util.Set; 

/** 
* Created by SayusiAndo on 6/9/2017. 
*/ 
public class MasterDataRestEndpointApplication extends Application { 

    private Set<Object> singletons = new HashSet<Object>(); 

    public MasterDataRestEndpointApplication() { 
     singletons.add(new CurrencyEndpoint()); 
    } 

    @Override 
    public Set<Class<?>> getClasses() { 
     HashSet<Class<?>> set = new HashSet<Class<?>>(); 
     return set; 
    } 

    @Override 
    public Set<Object> getSingletons() { 
     return singletons; 
    } 
} 

package endpoints; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import java.util.ArrayList; 

/** 
* Created by SayusiAndo on 6/9/2017. 
*/ 
@Path("/currency") 
public class CurrencyEndpoint { 

    @GET 
    @Path("/currencies") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response getCurrencies() { 
     ArrayList list = new ArrayList<String>(); 
     list.add("currency1"); 
     list.add("currency2"); 

     return Response 
       .status(Response.Status.OK) 
       .entity(list) 
       .build(); 
    } 
} 

POMモジュールのpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.sayusiando</groupId> 
    <artifactId>digitallibrary.dataservice.masterdata</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <modules> 
     <module>digitallibrary.dataservice.masterdata.rest.api</module> 
     <module>digitallibrary.dataservice.masterdata.package.ear</module> 
    </modules> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.6.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.wildfly.plugins</groupId> 
       <artifactId>wildfly-maven-plugin</artifactId> 
       <version>1.2.0.Alpha4</version> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

EARモジュールのpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <artifactId>digitallibrary.dataservice.masterdata</artifactId> 
     <groupId>com.sayusiando</groupId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <packaging>ear</packaging> 

    <artifactId>digitallibrary.dataservice.masterdata.package.ear</artifactId> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.6.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.10.1</version> 
       <configuration> 
        <finalName>MasterData.Dataservice</finalName> 
        <modules> 
         <webModule> 
          <groupId>com.sayusiando</groupId> 
          <artifactId>digitallibrary.dataservice.masterdata.rest.api</artifactId> 
          <bundleFileName>MasterData.Rest.Api.war</bundleFileName> 
          <contextRoot>/</contextRoot> 
         </webModule> 
        </modules> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>com.sayusiando</groupId> 
      <artifactId>digitallibrary.dataservice.masterdata.rest.api</artifactId> 
      <version>1.0-SNAPSHOT</version> 
      <type>war</type> 
     </dependency> 
    </dependencies> 


</project> 

RESTモジュールのpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <artifactId>digitallibrary.dataservice.masterdata</artifactId> 
     <groupId>com.sayusiando</groupId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <packaging>war</packaging> 
    <artifactId>digitallibrary.dataservice.masterdata.rest.api</artifactId> 

    <dependencies> 
     <dependency> 
      <groupId>javax.ws.rs</groupId> 
      <artifactId>javax.ws.rs-api</artifactId> 
      <version>2.1-m07</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.resteasy</groupId> 
      <artifactId>resteasy-servlet-initializer</artifactId> 
      <version>3.1.2.Final</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.resteasy</groupId> 
      <artifactId>resteasy-jaxrs</artifactId> 
      <version>3.1.2.Final</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.resteasy</groupId> 
      <artifactId>resteasy-jaxb-provider</artifactId> 
      <version>3.1.2.Final</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.6.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>3.1.0</version> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE application PUBLIC 
    "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" 
    "http://java.sun.com/dtd/application_1_3.dtd"> 
<application> 
    <display-name>digitallibrary.dataservice.masterdata.package.ear</display-name> 
    <module> 
    <web> 
     <web-uri>MasterData.Rest.Api.war</web-uri> 
     <context-root>/</context-root> 
    </web> 
    </module> 
</application> 
+0

何をweb.xmlは次のようになりますか? –

+0

web.xmlはありません。 RestEasyのマニュアルには、それが必要ではないと書かれています。 – SayusiAndo

+0

あなたの戦争を拡大し、内部を見てください。自動生成のものがあるかもしれませんか?レストエンドポイントを結ぶクラスがなければなりません。エンドポイントがHTTPサーブレットによって提供される必要があるため、これは.warの一部である必要があります。 –

答えて

0

私はいくつかのミスを犯したが、私はいくつかのことを学びました。

まず間違い:私はRESTEasyのアプリケーションパスを介し@ApplicationPath()注釈を削除何らかの理由で

。これとweb.xmlを持っていないWildflyは、これらのクラスをどうするかを知らなかった。彼らは登録されていませんでした。

@ApplicationPath()注釈をバック置く、とweb.xmlを削除するには、より良い状況を作りました。

第二の間違い:

何らかの理由(:))のために、私はhttp://localhost:8000の代わりhttp://localhost:8080をチェックします。後者はWildFlyのサイトです。最初のものは何もない。 EARおよびWARファイルの

  • 名前
  • この場合には重要ではありませんURLは以下に従って作成されます:http://{host}:{port}/{applicationPathvalue}/{pathValueOfClass}/{pathValueOfMethod}私の場合は

が私の質問に答えます:

  • {host}:localhostの
  • {port}:8080
  • {applicationPathValue}:通貨(私の質問のコードを確認してください)
  • {pathValueOfMethod}::通貨が(私の質問にコードをチェックAPI

  • {pathValueOfClass}(以下のサンプルコードを確認してください) )

    @ApplicationPath( "/ API") パブリッククラスMasterDataRestEndpointApplicationアプリケーション{

    を拡張します

    }

関連する問題