【发布时间】:2015-04-24 12:14:35
【问题描述】:
我们有一个在 Tomcat 7.0.56 上运行的简单 Web 应用程序。现在我们想使用我们的 自己的领域进行身份验证。
public class SpecialAuth extends DataSourceRealm{
@Override
public Principal authenticate(String username, String credentials){
....
}
}
这是在war里面的/META-INF/context.xml里面定义的
<Context>
<Realm className="some.package.SpecialAuth" dataSourceName="jdbc/MySQL" />
</Context>
将 SpecialAuth.class 放在哪里?
我们所期望的只是将 SpecialAuth.class 包含在我们的战争中,但随后我们在启动时遇到了以下异常
Caused by: java.lang.ClassNotFoundException: some.package.BackOfficeAuth
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
....
如果我们制作一个 jar,将它放入 $TOMCAT/lib 一切正常。
但这不是解决方案!这意味着每次我在这个类上工作时,我都必须触摸我的 tomcat 服务器并且不能使用正常的部署。
如何在不一直触碰tomcat的情况下使用内置的认证机制?
【问题讨论】:
-
您可能喜欢也可能不喜欢,但
$TOMCAT/lib就是答案。 -
如果这是唯一的部署方式?你真的关闭tomcat,复制库,做其他部署的东西,启动tomcat吗?而不是仅仅部署它?
-
也可以添加到tomcat启动类路径中。
标签: java tomcat jdbcrealm context.xml