博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Intellij IDEA下一个Tomcat启动带多个虚拟目录和JDNI数据源应用的方法
阅读量:5983 次
发布时间:2019-06-20

本文共 1088 字,大约阅读时间需要 3 分钟。

  hot3.png

前言:

之前公司做的一个老项目代码比较早,加上之前开发以实现功能为主,也没有对编码加以规范,开发中也有应届毕业的小孩,所以代码很烂。最近在重构过程中引出一些问题。

 

言归正传,场景是配置在Idea中的一个Tomcat中启动多个配置在server.xml中的虚拟目录应用

原来的开发环境是eclipse+Tomcat插件+Tomcat

server.xml中虚拟目录的配置是这样的

带有数据源配置的Context

10175544_DRpo.jpg

 

现在想改为idea+Tomcat实现

idea中的Tomcat的配置一般是这样的

10175545_oHvM.jpg

 

10175545_4INU.jpg

按照上述配置并且更改了server.xml中虚拟目录的mac系统中文件路径后发现,加载的第一个项目根本无法启动。

 

尝试一:

网上查资料找到一个说要勾选如下配置

Deploy applications configured in tomact instance

10175545_xEfa.jpg

照做之,发现第一个应用可以加载了但是,JDNI的数据源获取不到,郁闷;

什么原因呢,按理说虚拟目录你都加载了怎么会获取不到数据源呢,这就需要了解下,Tomcat在ide中加载机制了。

 

尝试二:

参考如下文章,感谢开发者头条和以下文章的作者。

 

IDE里的Tomcat是如何工作的

 

原来Intellij IDEA。在启动Tomcat时,Log一开始就能看到类似于下面的内容:

10175545_EtPR.jpg

IDEA是通过Tomcat的MBean,动态的向tomcat增加了一个Context,即一个应用。这样直接指定了应用的路径,访问路径等

 

也就是说idea是动态生成了一个context.xml 或者server.xml 而没有用默认的server.xml中我们之前做的配置。了解到这点我做了如下尝试;

找到其动态生成目录的context.xml文件更改其虚拟目录配置为我们需要的配置,验证发现并不生效。

每次在idea中重启Tomcat都将我们更改的配置覆盖了。

这就郁闷了难道就没有解决方案了吗?

后面在stack overflow找到一个方案试了下

如下图所示

10175545_YdlD.jpg

 

增加CATALINA_BASE变量配置覆盖idea中的默认配置指向我们的Tomcat目录重新启动

10175546_qn2I.jpg

发现CATALINA_BASE已经变为我们自定义的路径且项目可正常启动。并且可正常获取到server.xml中配置的数据源。

 

遗留问题:

1、重新部署添加war包时会将webapps中的应用路径删掉,导致运行时提示木有对应项目目录,需要在webapps中手动添加目录才可以正常启动自动deployed

转载于:https://my.oschina.net/zhaky/blog/756470

你可能感兴趣的文章
Mutable objects and Immutable objects
查看>>
反向代理获取不到用户真实ip
查看>>
HTTP协议详解(真的很经典)
查看>>
MySQL MyISAM/InnoDB高并发优化经验
查看>>
NoSuchMethodError异常处理之处理方式
查看>>
如何在控制台中生成URL
查看>>
更新svn版本后,在更新代码报错
查看>>
在 Mac OS X Lion 下修改 Hosts 的四种方法
查看>>
关于java中敏感词检测的一些总结
查看>>
app常规功能:检查更新 异步请求下载apk文件,更新进度条,最后安装apk
查看>>
android自定义listview的选中状态
查看>>
重用布局文件
查看>>
JDBC进行批处理Batch
查看>>
记OSX下IDEA修复
查看>>
在cmd命令窗口如何执行外有外部jar包的jar文件?
查看>>
程序设置横屏后,锁屏时会被销毁一遍,解锁时又重新加载onCreate的问题解决...
查看>>
sencha touch学习心得之FormPanel
查看>>
1.扩展方法2.接口的隐式实现和显式实现
查看>>
HDU题目分类
查看>>
HDU - 3085 Nightmare Ⅱ
查看>>