有关Jfinal在jetty环境下开发,tomcat环境下发布造成的问题解决心得。

首先熟悉一下tomcat的发布配置相关:

002346_WQ8z_938910.png

具体的发布配置步骤:

002346_1kjb_938910.png

当然,还有jar包的问题,由于使用到了web容器的环境变量,所以jetty的时候需要引用 jetty-server-8.1.8.jar 包;如果tomcat的时候需要引用 servlet-api.jar包,必须二选一的引用。

题外话,如果牵扯到jfinal上传文件的话,必须要有cos.jar 的包。

我的项目部署:

配置文件:tomcat../conf/server.xml

<Host  ..

<Context path="" reloadable="false" docBase="E:\www\gmb"/>

</Host>

002819_7Xk8_938910.png

003206_uZTW_938910.png

003528_EeTb_938910.png

原本是没有问题的,不过 @jfinal,詹总推荐把tomcat配置的path留空 " ",那么问题来了。很多时候我们前端的action请求

是以项目名称为前缀的,这样就等于少了一层(me.add(new ContextPathHandler("ctx")) 取到的是 " ")。

有人就会说了,path那就不留空 ,根据项目名称来,如 "/gmb",可是问题又来了,前端访问的时候,就变成了:http://localhost:8080/gmb/gmb 才能访问了,不要忘了tomcat下面配置的 docBase 的物理地址。


没错,就是这里的问题,折腾的我大半夜的现在才发这个心得。解决办法呢,就是 在 afterJFinalStart 中进行配置 这个项目前缀到 上下文环境中,JFinal.me().getServletContext().setAttribute("ctx", "/gmb");

003826_SHCG_938910.png


当然,没使用setAttribute("ctx", "/gmb") 之前,首页中有一处获取到了 ctx的项目前缀,其他都没有获取到,现在还在纳闷。这个问题也有点奇怪


Tomcat绑定多个域名:

      <Host name="www.web1.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      	<Context path="" reloadable="false" docBase="d:\www\web1"/>
      </Host>
      <Host name="www.web2.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      	<Context path="" reloadable="false" docBase="d:\www\web2"/>
      </Host>

最后:

JFinal.me().getServletContext().setAttribute("ctx", "/gmb");

这样的方便之处就在于,本地环境使用Jetty(引用jetty的jar包),项目名称配置为: "/gmb";

访问:localhost:8080/gmb

服务器端使用tomcat(引用tomcat的jar包),项目名称配置为:“/”,然后就不需要输入项目名称访问,尤其是绑定域名,tomcat端口改为80,最方便不过了。

访问:www.gmb.com



转载于:https://my.oschina.net/matol/blog/530445

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值