发生情况
项目在部署到tomcat下的时候怎么都没有springboot的初始化信息,于是百度搜了一下。发现都在说的是缺少了SpringBootServletInitializer这个东东,然后加上去了,还是没有效果。
一直在排查一直在测试,最后在某一次偷懒的过程中发现了问题
因为每次我部署程序都是直接把代码丢到tomcat的webapp目录下,需要来回的复制,测试起来很麻烦
因此就直接想到了将目录设置为那个不就行了吗,于是在server.xml
中配置了一句:
<Context path="" docBase="D:\GitPath\JavaWeb\XXXX\XXXX-1.0-SNAPSHOT" debug="0" reloadable="true" />
这里配置好你的项目的所在路径,然后就神奇的启动了。没想到一次偷懒居然真的能搞出来
注意代码中的appBase
和docBase
不要指向同一个目录appBase
会将项目下的文件夹当做一个app
来进行处理,因此全部代码放在根目录并没有用,但是可以用一个文件夹来承载
至于具体原理,可以这么理解:
用户根据网址的host进行访问的时候会对应该host
下的所有部署appBase
下的war包会部署为一个app
appBase
下的目录会部署为一个app
此时再通过context可以指定访问目录
和代码docBase
的映射关系
因此这么写应该也是对的:
webapp目录下建立ceshi
文件夹,并将代码放在这里
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="ceshi" debug="0" reloadable="true" />
</Host>
然后直接访问localhost:端口应该可以直接访问你要的app
以上仅为个人感觉,需要一定的证实
2 条评论
为什么springboot要用外置tomcat啊
可以用内置的。。。只是我的项目搞出来是一个外置的,所以就那样了