过去3周我一直在讨论这个问题,我会尽力解释它,因为我没有源代码。
。 Tomcat 7
。 Window Server 2008
。 JRE 7
在Web应用程序META-INF / context.xml中定义。
<Context>
<Realm className="org.apache.catalina.realm.JAASRealm" appName="ABC" userClassNames="com.abc.xyz" useContextClassLoader="true"/>
我有WEB-INF / classes / a123&amp; b123类文件
。这个类a123使用logincontext
。 logincontext有一些配置定义
。我认为这个配置文件是JAAS领域需要访问b123的一部分。
问题。找不到B123类。
我认为这个问题是Tomcat JAAS领域是在Tomcat服务器上,因为b123位于webappsclassloader下,所以无法找到b123。
因此,您可以在我的context.xml中看到,我确实设置了useContextClassLoader =“true”,我认为默认情况下是webappsclassloader。
我尝试将b123放在Tomcat启动类路径中然后工作,但现在我相信我有2份b123。
。 bt3在Tomcat服务器下 。 webappsclassloader下的b123
我认为类加载层次结构中更高级别的问题是尝试访问较低层次结构中的Web应用程序类。根据类加载委托的工作方式,这肯定会失败。因此,我认为唯一可行的方法是使用Thread上下文类加载器。
正如您在context.xml上看到的那样,我确实将useContextClassLoader设置为“true”。但是,如何通过Tomcat配置设置上下文类加载器,因为我无法访问源代码?我想在JAAS领域使用上下文类加载器之前需要设置上下文类加载器。
任何帮助都会很棒!