Jakarta ee 带owne JAAS的码头
我使用工件实现了一个JAAS LoginModuleJakarta ee 带owne JAAS的码头,jakarta-ee,jetty,jetty-9,Jakarta Ee,Jetty,Jetty 9,我使用工件实现了一个JAAS LoginModule <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> <version>${jetty.version}</version> org.eclipse.jetty 码头 ${jetty.version} LoginModule的实现扩展了Jetty文档中建议的类AbstractL
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty.version}</version>
org.eclipse.jetty
码头
${jetty.version}
LoginModule的实现扩展了Jetty文档中建议的类AbstractLoginModule
。如果我使用provided
声明jetty util
的依赖关系,那么我会得到异常
java.lang.NoClassDefFoundError:org/eclipse/jetty/util/security/Credential
原因是:java.lang.ClassNotFoundException:org.eclipse.jetty.util.security.Credential
但是,如果我删除
-标记以将其作为运行时包含在类路径中,那么就会得到异常
javax.security.auth.login.login异常:java.lang.LinkageError:加载程序约束冲突:加载程序(org/codehaus/plexus/classworlds/realm/ClassRealm的实例)先前启动了对名为“org/eclipse/jetty/util/security/Credential”的不同类型的加载。
如果我使用默认的JAAS实现PropertyFileLoginModule
一切都是现成的。当然,我不必声明这个工件的依赖关系。它包含在jetty maven插件中
当我在maven中运行jetty:run插件时,所有的异常都会发生
我的JAAS实现在一个工件中分离,我的web项目在另一个工件中分离,这是基于github中jetty提供的工件testJAASWebApp
如何将自己的JASS实现与Jetty Maven插件结合使用
环境:Jetty 9.2.x、Java 1.8_u111、Maven 3经过一些尝试和错误后,我发现用Maven项目的方式处理Classloader。 第一个JAAS工件:
- JAAS实现必须在单独的工件中
- 此工件可以使用jetty util作为依赖项,但仅限于提供的范围
- 此工件必须作为jetty server的模块加载。一种方法是,将工件的jar放在lib/ext中,并通过启动jetty使用选项
(关于类路径的更多信息:)--module=ext
PS:关于类加载器的更多信息:**