Intellij IDEA服务端开发实战Tomcat

IntelliJ IDEA导出war包及Tomcat部署

2017-03-05  本文已影响12217人  南山伐木

IntelliJ IDEA导出war包:

1)单击最左下角的选项按钮;

2)在右侧弹出的maven projects选项展开Lifecycle/package,双击或点击上面的执行按钮,即可;
3)默认会把打好的war包放在在target目录下。

【注意】
默认情况下在IDEA maven项目中src源代码下的xml等资源文件,并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。(如把mapper.xml及Analyzer词典等文件放在src/main/java目录下的情况)

在IDEA有两种方式解决:
1)建立src/main/resources文件夹,将xml等资源文件放置到这个目录中。maven工具默认在编译的时候,会将resources文件夹中的资源文件一块打包进classes目录中。

2)配置maven的pom文件配置,在pom文件中找到<build>节点,添加下列代码:

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

在Tomcat中部署war:
1、将war文件拷贝到tomcat目录webapps下(不要再建目录)。

2、将必要的jar文件拷贝到tomcat目录libxia下。 maven打包时已经将需要的jar打到class目录下,不再需要单独导包。

3、修改tomcat目录conf下的server.xml。
在<Host></Host>中加入:

<Context path="/manager" docBase="manager" debug=“0" privileged="true"/>

4、完毕,通过bin/startup.sh启动tomcat 即可。

【注意:在低内存的服务器上,若要更新war包,最好先shutdown tomcat,否则直接替换war会加载大量的class到内存中,以致内存撑爆。】

【在1G的内存的免费版ES2,发现该问题,每次都需要重启实例,多么痛的领悟】

前端静态资源缓存的问题

若在新版本若修改了js,css等静态资源,在发布新版本时,一般通过war包进行替换,但在Chrome等浏览器中还缓存之前的静态资源,如不清除,则还使用之前的资源文件,就会出现资源访问错误。

一般可通过对js,css等静态资源文件变更文件名来解决。
如淘宝:cssjs的引入是通过他们的CDN分布式形式,而且后面带有?t=20150105。作用:标注版本号;用随机数防止缓存。

对于上传的图片等静态资源的保存
1)千万不要将保存路径放置于运行环境下,应使用一个单独的绝对路径。(在发新的war包会将原运行环境的下目录都替换掉,若图片保存在运行环境下则会被清掉)

2)使用虚拟目录映射来解决请求的url与静态资源的映射。即将图片文件存放于一个单独的目录内,配置请求的url与该目录的映射关系,使在访问图片资源时自动从该独立的目录下去访问。

【注意:目录的路径是从根目录下的绝对路径,即保证能在任何目录都能直接使用cd命令打开的路径】

【若使用ngnix来控制静态资源的访问,则可以跳过!】

3)在tomcat/conf/server.xml中配置

<Context path="/" docBase="FBlog" debug="0" privileged="true"/>
       <Context path="/uploads" docBase="///custom_file/uploads" reloadable=“false"/>

或者在spring-mvc.xml配置文件中使用

<!-- 处理独立的资源目录虚拟路径映射 -->
<mvc:resources mapping="/post/**" location="file:///custom_file/uploads/"/>

博客地址:IntelliJ IDEA导出war包及Tomcat部署

上一篇下一篇

猜你喜欢

热点阅读