2016-07-28 12 views
0

春ブーツwarファイル展開する方法:tomcat7 - 私は春ブーツ単純なプロジェクト「あいさつ」を再作成し、私は、サーバー上でそれを実行すると、それが動作し、私はこのようなブラウザでJSONデータを取得

はlocalhostを: 9090/API /挨拶

それショー:

[{ "ID":1、 "テキスト": "こんにちはworld1"}、{ "ID":2、 "テキスト": "こんにちはworld2" }]

と私はコンソール経由でwarファイルを正常に生成します:

... \ワークスペース-STS-3.8.0.RELEASE \デモ> MVNクリーン

インストールし、私はすでに私のUbuntuのサーバー上で14.04 TLS、

とスローをtomcat7を設定していますウェブマネージャは、私は、サーバーにデプロイするWARファイルを選択します。

が、URLは、例えば、すべてのあいさつを表示する際に、タップ、それは何も表示されません。

error : the requested resource type is not valid

INFO:展開Webアプリケーションアーカイブ/var/lib/tomcat7/webapps/demo-0.0.1-SNAPSHOT.war 7月28日

ので、私は、Tomcat 7 catalina.outログにエラーをチェックします、2016 7:38:55 PM org.apache.catalina.loader.WebappClassLoader validateJarFile INFO:validateJarFile(/var/lib/tomcat7/webapps/demo-0.0.1-SNAPSHOT/WEB-INF/lib/javax.el- 3.0.0.jar) - jarがロードされていません。サーブレット仕様3.0、10.7.2節を参照してください。違反クラス:javax/el/Expression.class 2016年7月28日7:38:55 org.apache.catalina.loader.WebappClassLoader validateJarFile INFO:validateJarFile(/var/lib/tomcat7/webapps/demo-0.0.1) -SNAPSHOT/WEB-INF/lib/javax.servlet-api-3.1.0.jar) - jarがロードされていません。サーブレット仕様3.0、10.7.2節を参照してください。問題のクラス:javax/servlet/Servlet.class 2016年7月28日7:38:55 org.apache.catalina.loader.WebappClassLoader validateJarFile INFO:validateJarFile(/var/lib/tomcat7/webapps/demo-0.0.1) -SNAPSHOT/WEB-INF/lib/tomcat-embed-el-8.0.36.jar) - jarがロードされていません。サーブレット仕様3.0、10.7.2節を参照してください。違反クラス:javax/el/Expression。クラス

しかし、私は問題が正確に何を認識できませんでした、これは私のプロジェクト構造である

project structure

、これが私のJavaクラスである:

1 /クラスDemoApplication

@SpringBootApplication 
public class DemoApplication extends SpringBootServletInitializer{ 

    public static void main(String[] args) { 
     SpringApplication.run(DemoApplication.class, args); 
    } 
     @Override 
     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
      return application.sources(DemoApplication.class); 
     } 
} 

2 /クラスグリーティング

public class Greeting { 

    private BigInteger id; 
    private String text; 

    public BigInteger getId() { 
     return id; 
    } 
    public void setId(BigInteger id) { 
     this.id = id; 
    } 
    public String getText() { 
     return text; 
    } 
    public void setText(String text) { 
     this.text = text; 
    } 

} 

3 /クラスGreetingController

@RestController 
public class GreetingController { 

    private static BigInteger nextId; 
    private static Map<BigInteger, Greeting> greetingMap; 

    private static Greeting save(Greeting greeting){ 
     if(greetingMap == null){ 
      greetingMap = new HashMap<BigInteger, Greeting>(); 
      nextId = BigInteger.ONE; 
     } 


     //if update.... 
     if(greeting.getId() != null){ 
      Greeting oldGreeting = greetingMap.get(greeting.getId()); 
      if(oldGreeting == null){ 
       return null; 
      } 
      greetingMap.remove(greeting.getId()); 
      greetingMap.put(greeting.getId(), greeting); 

      return greeting; 
     } 

     // if create.... 
     greeting.setId(nextId); 
     nextId = nextId.add(BigInteger.ONE); 
     greetingMap.put(greeting.getId(), greeting); 

     return greeting; 
    } 


    static { 
     Greeting g1 = new Greeting(); 
     g1.setText("Hello word"); 
     save(g1); 

     Greeting g2 = new Greeting(); 
     g2.setText("Hello samsa"); 
     save(g2); 
    } 

    @RequestMapping(
      value="/api/greetings", 
      method=RequestMethod.GET, 
      produces=MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Collection<Greeting>> getGreetings(){ 

     Collection<Greeting> greetings = greetingMap.values();  
     return new ResponseEntity<Collection<Greeting>>(greetings, HttpStatus.OK); 


    } 

    @RequestMapping(
      value="/api/greetings/{id}", 
      method=RequestMethod.GET, 
      produces=MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Greeting> getGreeting(@PathVariable("id") BigInteger id){ 
     Greeting greeting = greetingMap.get(id); 
     if(greeting == null){ 
      return new ResponseEntity<Greeting>(greeting, HttpStatus.NOT_FOUND); 
     } 

     return new ResponseEntity<Greeting>(greeting, HttpStatus.OK); 

    } 


    @RequestMapping(
      value="/api/greetings", 
      method=RequestMethod.POST, 
      consumes=MediaType.APPLICATION_JSON_VALUE, 
      produces=MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Greeting> createGreeting(@RequestBody Greeting greeting){ 

     Greeting savedGreeting = save(greeting); 
     return new ResponseEntity<Greeting>(savedGreeting, HttpStatus.CREATED); 

    } 



    @RequestMapping(
      value="/api/greetings/{id}", 
      method=RequestMethod.PUT, 
      consumes=MediaType.APPLICATION_JSON_VALUE, 
      produces=MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Greeting> updateGreeting(@RequestBody Greeting greeting){ 

     Greeting updatedGreeting = save(greeting); 
     if(updatedGreeting == null){ 
      return new ResponseEntity<Greeting>(HttpStatus.INTERNAL_SERVER_ERROR); 
     } 
     return new ResponseEntity<Greeting>(updatedGreeting, HttpStatus.OK); 

    } 


    private static boolean delete(BigInteger id) { 
      Greeting deletedGreeding = greetingMap.remove(id); 
      if(deletedGreeding == null){ 
       return false; 
      } 
      return true; 
    } 

    @RequestMapping(
      value="/api/greetings/{id}", 
      method=RequestMethod.DELETE, 
      consumes=MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Greeting> deletedGreeting(@PathVariable("id") BigInteger id, @RequestBody Greeting greeting){ 

     boolean deleted = delete(id); 
     if(!deleted){ 
      return new ResponseEntity<Greeting>(HttpStatus.INTERNAL_SERVER_ERROR); 
     } 

     return new ResponseEntity<Greeting>(HttpStatus.NO_CONTENT); 
    } 

} 

、これはPOMファイルである:あなたがあなたのコンテキストパスを設定していない可能性があり

<?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.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <name>demo</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.6.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 
      <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-undertow</artifactId> 
</dependency> 

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <scope>provided</scope> 
</dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 


</project> 
+0

{tomcat-folder}/webappsにプロジェクト.warを入れましたか? – Andrew

+0

はい私は手動で/ webappsに入れました –

+0

私はあなたが提供するようにundertowをマークする必要があると思いますか? – saml

答えて

0

application.propertiesであるため、Tomcatはアプリケーション名のデフォルトパスを使用しています。

は、コンテキストパスを設定するには、プロジェクトに以下でcontext.xmlを追加する組み込みのTomcatのため、外部のTomcatのコンテキストパスを設定するプロパティファイルにserver.contextPath=/を追加します。

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiJARLocking="true" path="/"/> 
+0

contextPathを指定することで正確に何を意味するのですか?私は春のプロジェクトで新しくなって以来の提案があります –

+0

SpringBootはデフォルトでapplication.propertiesファイルを使用して設定します。 resourcesディレクトリの下にapplication.propertiesを追加するだけで、既知のプロパティを追加することでデフォルトの設定を上書きすることができます。 server.contextPath = /は組み込みコンテナのコンテキストパスを変更しますが、外部のTomcatサーバの場合はcontext.xmlをmain/webapp/META-INF /フォルダに追加する必要があります。ファイル内に以下を追加してください: <?xml version = "1.0" encoding = "UTF-8"?> KubenT

+0

同じ、私はWARファイルをデプロイTomcatマネージャUIの は、私はこのメッセージが表示されます。 は「OK - コンテキストパスで開始アプリケーション/demo-0.0.1-SNAPSHOT」 は、それがパスについて何かを意味しているの... –

関連する問題

 関連する問題