私は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を使用して利用可能であるべきいくつかの記事や例(それらのいずれも作業)によると:ただ単に
- http://localhost:8080/Currency/Currencies
- またはhttp://localhost:8080/MasterData.Rest.Api.war/Currency/Currencies
warファイルのデプロイもうまくいきません。デフォルトでは、このファイルのファイル名はdigitallibrary.dataservice.masterdata.rest.api-1.0-SNAPSHOT.warです。展開を成功した後のエンドポイントは、ここでは利用可能であるべきである:それは動作しません
。
Wildflyは、次のことを言うと、アプリケーションは、次のURL(私はただ...推測している)が、それらのどちらも作業を介してアクセスすることができることを意味します...
- http://localhost:8080/Currency/Currencies
- http://localhost:8080/MasterData.Dataservice.ear/Currency/Currencies(それは私の意見で任意のポイントを持っていない)
- http://localhost:8080/MasterData.Dataservice.ear/MasterData.Rest.Api.war/Currency/Currencies
- http://localhost:8080/MasterData.Rest.Api.war/Currency/Currencies
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>
何をweb.xmlは次のようになりますか? –
web.xmlはありません。 RestEasyのマニュアルには、それが必要ではないと書かれています。 – SayusiAndo
あなたの戦争を拡大し、内部を見てください。自動生成のものがあるかもしれませんか?レストエンドポイントを結ぶクラスがなければなりません。エンドポイントがHTTPサーブレットによって提供される必要があるため、これは.warの一部である必要があります。 –