Wicket + Spring Boot + .war文件部署

3
构建在此示例基础上:https://github.com/Pentadrago/spring-boot-example-wicket,并考虑到这里的jar-to-war指南:https://spring.io/guides/gs/convert-jar-to-war/,我想将我的现有Wicket + Spring(使用data-jpa和security)转换为Spring Boot。很容易让fat-jar设置工作,但迄今为止,我无法将此设置转换为.war文件以在Tomcat中部署。
问题源于冲突的说明:
一方面,对于jar-to-war转换指南,从非@Configuration类扩展org.springframework.boot.context.web.SpringBootServletInitializer 另一方面,对于标记为@Configuration的类的fat-jar Wicket示例,实现org.springframework.boot.context.embedded.ServletContextInitializer。
我尚未能够使两者对齐,以便在使用嵌入式容器进行调试时和在Tomcat中部署为.war时都可以获得工作应用程序。
请问有人能告诉我如何设置可以部署为.war文件的spring-boot启用的wicket应用程序吗?
1个回答

2
我所做的,让应用程序工作的步骤如下:
我检出了您发布的示例项目 https://github.com/Pentadrago/spring-boot-example-wicket
然后按照 https://spring.io/guides/gs/convert-jar-to-war/ 指南中的代码,我只需进行以下更改:
build.gradle 更改为:
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.0.2.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'
apply plugin: 'war'

jar {
    version =  '0.0.1'
}

repositories {
    mavenCentral()
}

configurations {
    providedRuntime
}

dependencies {
    compile(
        "org.springframework.boot:spring-boot-starter",
        "org.springframework.boot:spring-boot-starter-logging",

        "org.springframework:spring-web:4.0.3.RELEASE",
        "org.apache.wicket:wicket-spring:6.15.0",
        )

    testCompile(
        "org.springframework.boot:spring-boot-starter-test",
    )

    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
}

添加以下类:

HelloWebXml.java

package spring.boot.example.wicket;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

public class HelloWebXml extends SpringBootServletInitializer {

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

这是英文原文的翻译:

这些是我所做的唯一更改,并且在没有任何问题的情况下部署到了Tomcat 7。

以下是日志摘录,显示wicked已经启动:

2014-08-27 20:57:41.396 INFO 2708 --- [on(3)-127.0.0.1] org.apache.wicket.Application : [wicket-filter] init: Wicket core library initializer

我不确定你困惑的原因是什么,但你必须理解SpringBootServletInitializerServletContextInitializer有不同的用途。


你最后一行确实指出了我的问题:我错误地尝试替换 WebInitializer 为你的新类 HelloWebXml。添加新类确实解决了这个问题。非常感谢! - Tim
1
是的,现在看起来很简单。难怪我在网上找不到任何类似问题的人。 :) - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接