0

JBoss EAP 6.4 にSpring Boot War アプリケーション (タイルビュー付き) をデプロイするのに苦労しています。このアプリケーションは Tomcat 8 でスムーズに動作しますが、JBoss にデプロイすると応答しません。起動ログは問題ありませんが、ブラウザーからコントローラーを呼び出すと、エラーJBWEB000065が発生します。私は、Eclipse STS からデプロイすることと、戦争をスタンドアロン/デプロイに配置することの両方で起こります。

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.codependent.gitprofiles</groupId>
    <artifactId>boot3</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>boot3</name>
    <description>Demo project for Spring Boot</description>

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

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

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

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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

</project>

サーブレット初期化子:

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Boot3Application.class);
    }

}

Boot3Application :

@SpringBootApplication
@RestController
public class Boot3Application {

    @RequestMapping("/home")
    public String home(){
        return "home";
    }

    public static void main(String[] args) {
        SpringApplication.run(Boot3Application.class, args);
    }
}

TilesConfiguration :

@Configuration
public class TilesConfiguration {

     @Bean
     public TilesConfigurer tilesConfigurer() {
         final TilesConfigurer configurer = new TilesConfigurer();
         configurer.setDefinitions(new String[] { "WEB-INF/**/tiles.xml" });
         configurer.setCheckRefresh(true);
         return configurer;
     }

     @Bean
     public TilesViewResolver tilesViewResolver() {
         final TilesViewResolver resolver = new TilesViewResolver();
         resolver.setViewClass(TilesView.class);
         return resolver;
     }

}

起動ログ:

[org.jboss.web] (ServerService Thread Pool -- 80) JBAS018210: Registrar el contexto web: /boot3
[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/boot3]] (ServerService Thread Pool -- 80) Spring WebApplicationInitializers detected on classpath: [org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration$JerseyWebApplicationInitializer@57c6298e, com.codependent.gitprofiles.ServletInitializer@16df6757]
[org.hibernate.validator.internal.util.Version] (background-preinit) HV000001: Hibernate Validator 4.3.2.Final-redhat-2
[stdout] (ServerService Thread Pool -- 80) 
[stdout] (ServerService Thread Pool -- 80)   .   ____          _            __ _ _
[stdout] (ServerService Thread Pool -- 80)  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
[stdout] (ServerService Thread Pool -- 80) ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
[stdout] (ServerService Thread Pool -- 80)  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
[stdout] (ServerService Thread Pool -- 80)   '  |____| .__|_| |_|_| |_\__, | / / / /
[stdout] (ServerService Thread Pool -- 80)  =========|_|==============|___/=/_/_/_/
[stdout] (ServerService Thread Pool -- 80)  :: Spring Boot ::        (v1.3.3.RELEASE)
[stdout] (ServerService Thread Pool -- 80) 

[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] (ServerService Thread Pool -- 80) Mapped "{[/home]}" onto public java.lang.String com.codependent.gitprofiles.Boot3Application.home()
...

ブラウザーで呼び出すhttp://localhost:8080/boot3/homeと、JBoss ログに何も表示されずに次のように表示されます。

JBWEB000065: HTTP Status 404 - /boot3/error
JBWEB000309: type JBWEB000067: Status report
JBWEB000068: message /boot3/error
JBWEB000069: description JBWEB000124: The requested resource is not available.
JBoss Web/7.5.7.Final-redhat-1

更新: Stackoverflowで解決策を見つけましたが、私の場合は役に立ちません:server.servlet-path=/*アプリケーションを使用すると、リクエストの処理が開始され、コントローラーが呼び出されますが、Tiles ビューをレンダリングできません:

Cannot forward to error page for request [/home] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false

私はTomcatをチェックしましたが、それを使用server-servlet-path/*しても(同じエラーで)動作しませんが、/.

server.servlet-path=/*要約すると、JBoss では(コントローラーでの呼び出しを許可するため) とTiles ビューのレンダリングを許可するための両方を持つことができないserver.servlet-path=/ため、この問題を回避するにはどうすればよいでしょうか?

4

1 に答える 1