为什么Intellij-IDEA会忽略我的tomcat/conf/server.xml上下文标记?

Dan*_*lan 19 java tomcat intellij-idea

在我的$ TOMCAT_HOME/conf/server.xml中,我把它放在底部附近:

...

 <Context path="/staticdir" docBase="/filesystem/path/to/static/dir"/>                                

      </Host>
    </Engine>
  </Service>
</Server>
Run Code Online (Sandbox Code Playgroud)

我这样做是因为我的文件系统上有文件我希望tomcat在你去localhost时提供服务:8080/staticdir

但是当我在Intellij-IDEA中启动应用程序时,tomcat日志会说:

使用CATALINA_BASE:"C:\ Users\me.IntelliJIdea11\system\tomcat\Unnamed_Product_2"

如果我进入我的文件系统上的那个目录并查看conf/server.xml文件,它就没有Context我放在那里的标记.为什么intellij会修改它以及如何防止它?

我有一种感觉,我应该对我的$ TOMCAT_HOME/conf/context.xml文件进行此更改,但我很难找到如何在那里进行此更改的示例.如果有人能给我看一个例子,我会认为这是一个答案,因为我注意到intellij没有修改那个文件.


我找到了一个解决方法.

在此输入图像描述

但我真的不喜欢这个,因为当新用户第一次尝试运行应用程序时,我无法想象一种方法来检测他们是否错误地执行了此步骤.

这是我的tomcat配置的图片:

在此输入图像描述

Cra*_*der 28

默认情况下,IntelliJ IDEA会修改CATALINA_BASE环境,以便Tomcat使用调整后的配置文件直接从工件输出位置部署应用程序,但是可以覆盖此行为并手动配置所有内容(通过更改工件输出webapps或更改服务器配置) IDEA以同样的方式执行,以便从标准工件输出进行部署.

  • 非常感谢您的提示!那正是我所需要的。我选择了“替代”方法,并将CATALINA_BASE设置为所需的位置。 (2认同)
  • 通过使用自定义的catalina_base而不是Intellij未指定的默认值,是否有任何副作用? (2认同)

小智 8

我需要在Tomcat/IntelliJ中使用ROOT上下文,因此在Host标签的server.xml中,添加特定的Context:

<Context path="" docBase="C:\intranet\app\tomcat\webapps\ROOT\" reloadable="true" />
Run Code Online (Sandbox Code Playgroud)

在intelliJ 11.1.5的"服务器"选项卡面板中,选中"部署在Tomcat实例中配置的应用程序",IntelliJ将在文件夹部署中复制server.xml:

C:\Users\{Username}\.IntelliJIdea11\system\tomcat\Unnamed_Product_2\conf"
Run Code Online (Sandbox Code Playgroud)

现在我可以通过示例crossdomain.xml访问Root域中的资源:

http://localhost:8080/crossdomain.xml
Run Code Online (Sandbox Code Playgroud)