0

我正在尝试在非 ROOT 文件夹中的 apache-tomcat-8.0.12 中部署 moqui 1.6.3 和运行时。

我在 build.gradle 中做了以下修改:

任务 deployTomcatRuntime << { 删除文件(tomcatHome + '/runtime'); 删除文件(tomcatHome + '/webapps/ myweb '); 删除文件(tomcatHome + '/webapps/ myweb.war ')从文件(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,则可以正常登录系统。

我在框架代码中进行了一些调试,发现系统在从登录重定向到根页面时创建了一个新的 ExecutionContextImpl。下面是我放置日志的地方:

ExecutionContextImpl getEci() { logger.debug ("===========getExecutionContext:"+activeContext.get()) // 这里的 ExecutionContextImpl 强制转换看起来很有趣,但是避免了 Groovy 使用缓慢的 castToType 调用 ExecutionContextImpl ec = (ExecutionContextImpl) activeContext.get() if (ec != null) return ec if (logger.traceEnabled) logger.trace("在线程 [${Thread.currentThread().id}:${Thread. currentThread().name}]") if (!(Thread.currentThread().getContextClassLoader() instanceof StupidClassLoader)) Thread.currentThread().setContextClassLoader(cachedClassLoader) ec = new ExecutionContextImpl(this) this.activeContext.set(ec ) 返回 ec }

impl.context.ExecutionContextFactoryImpl [] ===========getExecutionContext:ExecutionContext in tenant DEFAULT --- 2016-05-02 23:02:51.176 [nio-8080-exec-4] DEBUG impl.context .ExecutionContextFactoryImpl [] ===========getExecutionContext:null --- 2016-05-02 23:02:51.177 [nio-8080-exec-4] 调试 impl.context.ExecutionContextFactoryImpl [] == =========getExecutionContext:ExecutionContext in tenant DEFAULT

看起来ThreadLocal在tomcat的非ROOT文件夹中有问题,但不确定。有人在非ROOT文件夹中部署了moqui吗?

4

0 回答 0