我试图在非ROOT文件夹中的apache-tomcat-8.0.12中部署moqui 1.6.3和运行时。
我在build.gradle中完成了以下修改:
任务deployTomcatRuntime<< { 删除文件(tomcatHome +' / runtime');删除文件(tomcatHome +' / webapps / myweb ');删除文件(tomcatHome +' / webapps / myweb.war ') copy {from file(plusRuntimeName);进入文件(tomcatHome +' / webapps');重命名(plusRuntimeName,' myweb.war ')}}
命令后:gradle cleanAll,gradle buid,gradle addRuntimeTomcat,myweb.war成功部署在tomcat webapp文件夹中。
之后,我使用" http://localhost:8080/myweb"打开根页面,登录页面出现在" http://localhost:8080/myweb/Login"。
然后我提供用户名和密码并点击登录,但我仍然在登录页面中没有任何错误。
如果我将myweb.war更改为ROOT.war,则可以正常登录系统。
我在框架代码中添加了一些调试,并发现该系统在从Login重定向到根页面时创建了一个新的ExecutionContextImpl。下面是我放日志的地方:
ExecutionContextImpl getEci(){ 的 logger.debug(" =========== getExecutionContext:&#34 + activeContext.get()) //这里的ExecutionContextImpl看起来很有趣,但是使用缓慢的castToType调用避免了Groovy ExecutionContextImpl ec =(ExecutionContextImpl)activeContext.get() if(ec!= null)返回ec if(logger.traceEnabled)logger.trace("在线程中创建新的ExecutionContext) [$ {Thread.currentThread()的标识。}:$ {。Thread.currentThread()名称}]&#34) if(!(Thread.currentThread()。getContextClassLoader()instanceof StupidClassLoader)) Thread.currentThread()。setContextClassLoader(cachedClassLoader) ec = new ExecutionContextImpl(this) this.activeContext.set(EC) 返回ec }
impl.context.ExecutionContextFactoryImpl [] =========== getExecutionContext:租户DEFAULT中的ExecutionContext --- 2016-05-02 23:02:51.176 [nio-8080-exec-4] DEBUG impl.context.ExecutionContextFactoryImpl [] 的 =========== getExecutionContext:空 --- 2016-05-02 23:02:51.177 [nio-8080-exec-4] DEBUG impl.context.ExecutionContextFactoryImpl [] =========== getExecutionContext:租户DEFAULT中的ExecutionContext
看起来ThreadLocal在tomcat的非ROOT文件夹中有问题,但不确定。 有没有人在非ROOT文件夹中部署moqui?