REST WebサービスをJava Springで作成しています。STSと正常にロードされたサンプルを正常にロードしました:
「このガイドでは、Springを使用して「hello world」RESTful Webサービスを作成するプロセスについて説明します。」 http://spring.io/guides/gs/rest-service/
ただし、そのチュートリアルはこれまでしか進んでいません。サーブレットを含む自己実行jarファイルの代わりにWARファイルを作成し、そのWARファイルをデプロイします。次に、このチュートリアルを見つけて、最初のチュートリアルのbuild.gradleファイルを変更しようとしました。
「Spring Boot JARアプリケーションをWARに変換する」 http://spring.io/guides/gs/convert-jar-to-war/
.warファイルに問題なく組み込まれているようです。サービスはTomcatインスタンスのマネージャーで実行されています。しかし、サービスを使用しようとすると、404が表示されます。
URL 404'd
http://localhost:8080/gs-rest-service-0.1.0/dbgreeting?name=MyName
マッピングを変更する必要がありますか?
DataBaseController.Java
@RequestMapping("/dbgreeting")
public @ResponseBody DataBaseGreeter dbgreeting(
@RequestParam(value="name", required=false, defaultValue="World") String name) {
return new DataBaseGreeter(counter.incrementAndGet(),String.format(template, name));
}
これで、.warファイルがさまざまなものを組み合わせて作成されました。おそらく何かを見落としているのではないかと心配しています。
OSXのXAMPPにwebapp /フォルダーが含まれていないことを発見して以来、代わりにBitnamiのTomcatスタックをロードする必要がありました。人々は通常、これに基づいてXAMPPと他のスタックを切り替えますか?または、XAMPPで作成されたwebappフォルダを取得するために何かを見逃しましたか?
WARは、特別なプロパティを持つJARです。これにはWEB-INFが必要です。その下に、デプロイメント、アプリケーションサーバー依存XML構成ファイル、および通常はlib、クラス、およびその他のオッズとエンドを記述するweb.xmlが必要です。
最も簡単な方法は、Mavenを使用してWARを作成することです。 pom.xmlのプロジェクトタイプをJARからWARに簡単に変更できるはずです。あなたが従ったチュートリアルはGradleを使用しているようですが、GradleはMavenを使用していると思いますので、どこかにあるはずです。それ以外は、WARを構築する方法のチュートリアルをググる。 Tomcatが特別なデプロイメント記述子を必要とするとは思わないので、必要なのはweb .xmlだけです。
(OPからの回答が質問からここに移動しました)
少年私は本当に馬鹿げていると思います。gradleの手順を変更した後、チュートリアルにもっと多くのことがありました。web.xmlの必要性に取って代わる/置き換えられる、非常に必要な自動構成を含みます。
サーブレットを初期化する
以前は、アプリケーションにはpublic static void main()
メソッドが含まれていましたが、これは、spring-boot-gradle-pluginがJava -jar
コマンド。
これをXMLファイルのないWARファイルに変換することにより、アプリケーションの起動方法に関するサーブレットコンテナーへの別のシグナルが必要になります。
src/main/Java/hello/HelloWebXml.Java
package hello;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.SpringBootServletInitializer;
public class HelloWebXml extends SpringBootServletInitializer {
@Override
protected void configure(SpringApplicationBuilder application) {
application.sources(Application.class);
}
}
最初の答えは信用できますが、web.xml(またはSpring-Bootがそれを置き換えるために使用するもの)が必要であることはどちらも正しいことでした。
スプリングブートアプリケーションの起動時にINFO出力が表示されることを期待しているため、いくつかのアイデアがあります。
通常のTomcatインスタンスを試してください
bin/startup.sh
を使用してTomcatを起動しますwebapps
ディレクトリにコピーしますwarファイルを手動で検査します