传统那种必须带 Web.xml 的 Java web 项目,如何脱离依赖单独服务端软件,以微服务化得方式运行部署?

2020-03-12 10:03:02 +08:00
 tctc4869

之前开发了一个传统的带 web.xml 的 SSM 项目,现在成型了不少,但依赖 tomcat 软件,我想让其微服务化运行,如何像 spring boot 一样,内嵌 tomcat 或者 Undertow。通过 main 函数启动,或是类似打成 jar 包部署,在 windows 上 用 bat 命令。java -jar xxx.jar 这种方式运行

网上多数内嵌服务端容器的教程,都是带 maven,要么 spring boot,但我这个成型的项目是非 maven,我也不想转,有人提议转成 spring boot,我不想转成 spring boot,有几个 spring xml 配置,我怕改动较大,运行不了。

大家有哪些好方法么?

5004 次点击
所在节点    Java
40 条回复
chendy
2020-03-12 10:10:27 +08:00
除非骚操作太多,否则上 maven 不是什么大问题,上 spring-boot 也没有什么大问题
sagaxu
2020-03-12 10:16:47 +08:00
是 springboot 不能 import xml 配置?还是找不到非 spring 程序内嵌 tomcat 的办法?
tctc4869
2020-03-12 10:22:45 +08:00
@sagaxu 准确的说,是我找不到非 Spring boot 的非 maven 的 java web 项目的内嵌 tomcat 的方法,
该项目目前都必须带 web.xml 文件才能启动,而且我并不想转成 maven 项目。
tctc4869
2020-03-12 10:25:44 +08:00
@chendy 我不想转成 maven
hcymk2
2020-03-12 10:32:17 +08:00
微服务和是否内嵌 tomcat 或者 Undertow 没有关系。
sonyxperia
2020-03-12 10:37:11 +08:00
maven 做错了什么
liuxey
2020-03-12 10:42:55 +08:00
那就不要转微服务化了, 传统的 tomcat 跑跑也挺好的,
一个 tomcat 跑一个服务,不也是“微服务”了吗,

PS:tomcat 也是通过 main 函数启动的,也是打包成各种 jar 包部署,startup.bat 也是 java - 命令启动的,何必为难自己
tctc4869
2020-03-12 10:58:30 +08:00
@hcymk2 好把,用词不对
zhaorunze
2020-03-12 11:01:43 +08:00
spring boot 也可以读取 spring xml 配置 吧?只有你想不到的,没有别人没有实现的
tctc4869
2020-03-12 11:02:33 +08:00
@sonyxperia maven 对于我来说,最大的问题是依赖网络,这就让我心里不踏实。即便 maven 配置里的引用 url 换上阿里云的也是一样
tctc4869
2020-03-12 11:04:21 +08:00
@liuxey 主要是不知道怎么让传统的那种 web.xml java web 项目,通过 tomcat-embed-core 启动,如果是 maven 的,那我知道是怎么启动的。
MOETAN0
2020-03-12 11:04:39 +08:00
tomcat 有 embed 模式,可以通过 API 方式启动(不用 maven ),并加载你原有的 web.xml 。
可以参见 https://www.codejava.net/servers/tomcat/how-to-embed-tomcat-server-into-java-web-applications
「 3. The Tomcat Embed API 」
--------
To configure the server for an existing web application, use the following Tomcat’s method:
addWebapp(String contextPath, String baseDir)
Where contextPath is the web application name and baseDir is the base directory of the application. baseDir can refer to an external WAR file, or to a web application directory in the same project.
Cbdy
2020-03-12 11:14:58 +08:00
Docker
ElegantOfKing
2020-03-12 11:27:41 +08:00
@tctc4869 如果担心网络的话,可以自己在本地 使用 Nexus 搭建 Maven 私服。
guixiexiezou
2020-03-12 11:31:31 +08:00
如果不想外部使用 tomcat 的话,那就内嵌一个 tomcat 就可以了,有一个 tomcat.jar 的类库可以使用
Hyseen
2020-03-12 11:44:37 +08:00
那就用 Docker 吧
suspended
2020-03-12 12:22:54 +08:00
328KB 的 Winstone.jar 如何?
fatpower
2020-03-12 13:00:44 +08:00
docker + tomcat
fmumu
2020-03-12 13:10:57 +08:00
用 jetty 就可以啊
maven
2020-03-12 13:13:40 +08:00
你用 docker 就是了啊,但问题是你这样只是虚拟化,并不是微服务啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652076

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX