【问题标题】:Tomcat configuration for Spring appSpring 应用程序的 Tomcat 配置
【发布时间】:2010-07-06 10:16:03
【问题描述】:

我已经构建了用于 Tomcat 的 Web 应用程序。这取决于春天。尝试访问时出现以下异常:

java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)

我阅读了tomcat docs,发现需要配置安全性。我添加了以下几行到
“/usr/share/tomcat/conf/catalina.policy”:

grant codeBase "file:${catalina.home}/webapps/MyProject/-" {
    permission java.lang.RuntimePermission;
};

但这没有帮助。要补充的是,我通过粘贴以下commands 来安装Tomcat:

sudo apt-get install tomcat6
cd /usr/share/tomcat6
sudo ln -s /var/lib/tomcat6/conf conf
sudo ln -s /etc/tomcat6/policy.d/03catalina.policy conf/catalina.policy
sudo ln -s /var/log/tomcat6 log
sudo chmod -R 777 /usr/share/tomcat6/conf

我已经重启了服务器。该项目存在于指定位置。

我做错了什么?

我真的很想尽可能少地修改服务器上的东西,而不是将额外的 jar 复制到服务器的 lib 文件夹中。


我的

Tomcat 版本 = Apache Tomcat/6.0.20

春季版 = 3.0.1.RELEASE


堆栈跟踪太大,无法在此处发布,所以请关注link 来查看。


有人可以帮我吗?补充一点,它在我的 Apache Geronimo 上毫无例外地执行。

【问题讨论】:

  • 我不使用Linux,但我从来没有修改Tomcat权限来部署Spring。你到底在做什么需要这个?在 Windows 上,Spring 部署不需要这样的东西。
  • 我有几个基于 Spring 的 webapps 在 Linux 上的 Tomcat 中运行。无需进行这种性质的配置更改。
  • 您使用的是哪个发行版?
  • 请显示完整的堆栈跟踪。

标签: java spring tomcat classloader securitymanager


【解决方案1】:

我不会使用那些符号链接。相反,我会部署在 $CATALINA_BASE/webapps(查看 /etc/init.d/tomcat6)。然后在策略文件(/etc/tomcat6/policy.d/03catalina.policy)中:

grant codeBase "file:${catalina.base}/webapps/MyProject/WEB-INF/lib/-" {
    permission java.lang.RuntimePermission "createClassLoader";
};

另一个选项可以是编辑 /etc/tomcat6/policy.d/04webapps.policy。

前段时间这对我有用。

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 2016-08-10
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多