1、在build.gradle文件中增加以下内容
apply plugin:'war'
在dependencies区块中者冲梁增加
compilegroup:'org.slf4j',name:'slf4j-api',version:'1.7.21'
providedRuntime'org.springframework.boot:spring-boot-starter-tomcat'
2、启动文件要实现WebApplicationInitializer接口
@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer implements WebApplicationInitializer {}
3、在webapp目录下增加WEB-INF/weblogic.xml
此处有几点需要特别关注的问题
1、你编写的启动文件,如我这里提到的MyApplication文件,不能放在com包下,如果放在com包下判竖一定要增加@ComponentScan(basePackages ="com.test")注解,就是扫描路径一定不能从com包开始,不然发布程序会有冲突,导致发布不成功。
2、程序发首运布时会提示需要jersey-spring包,需要在build.gradle文件中增加compilegroup:'com.sun.jersey.contribs',name:'jersey-spring',version:'1.19'
3、打包的war文件中lib包中会有一个log4j-slf4j-impl-2.7.jar包,这个包和org.slf4j包冲突,需要删除。
参考文档:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
这里介绍另一个方法,利用“内存中的容器”来调试,就是我们不用打包并扔到tomcat中,自己在IDE中,用Unit Test的方法来测试。1. Jersey的测试框指数架支持的容器很多,这里选用了常用的grizzly2
在项目的pom.xml中,引入依赖:
<dependency>
<groupId>org.glassfish.jersey.test-framework</groupId>
<artifactId>jersey-test-framework-core</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-grizzly2</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
2. 写Jersey的Resource文件
@Path("my/jersey")
public class TestResource{
@Autowired
protected SystemManager systemManager//这由spring注入
@GET
@Path("/test")
public String test(@QueryParam("systemId") Integer systemId) {
return "test"
}
}
3. 书写SystemManager和SystemManagerImpl
略
4. 把manager配置码旅到Spring Application.xml中
略
5. 书写Jersey Application
@Path("webapi")
public class TestApplication extends ResourceConfig {
public TestApplication(){
register(RequestContextFilter.class)
register(TestResource.class)
}
}
6. 书写Unit Test文件
public class MyRestTest extends JerseyTest {
@Override
protected Application configure() {
ResourceConfig rc = new MyApplication()
.register(SpringLifecycleListener.class)
.register(RequestContextFilter.class)
enable(TestProperties.LOG_TRAFFIC)
enable(TestProperties.DUMP_ENTITY)
return configure(rc)
}
@Override
protected ResourceConfig configure(ResourceConfig rc) {
rc.property("contextConfigLocation", "spring.xml")
return rc
}
@Test
public void test(){
final String hello = target("my/jersey/test")
.queryParam("systemId", 1)
.request()
.get(String.class)
System.out.println("==========\唯模首n" + hello)
}
}
7. 运行test(),即可看到结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)