我将Jetf 9.2.21和pax-web-jetty 4.3.4与karaf 4.0.10一起使用。我尝试通过将布尔属性设置为SecurityHandler来使用jetty-web.xml配置SecurityHandler
<Configure id="webapp"
class="org.eclipse.jetty.webapp.WebAppContext">
<Get name="securityHandler">
<Set name="sessionRenewedOnAuthentication" type="boolean">false</Set>
</Get>
但是,它失败了
DOMJettyWebXmlParser | NoSuchMethodException while parsing jetty-web.xml
java.lang.NoSuchMethodException: org.eclipse.jetty.security.ConstraintSecurityHandler.setSessionRenewedOnAuthentication(java.lang.Boolean)
at java.lang.Class.getMethod(Class.java:1786)[:1.8.0_172]
at org.ops4j.pax.web.service.jetty.internal.util.DOMJettyWebXmlParser.set(DOMJettyWebXmlParser.java:188)[634:org.ops4j.pax.web.pax-web-jetty:4.3.4]
该异常是正确的:ConstraintSecurityHandler有一个方法的参数为 primitive 布尔类型,而不是DOMJettyWebXmlParser尝试使用的布尔类。
我成功使用了一些不同的配置
<Configure id="webapp"
class="org.eclipse.jetty.webapp.WebAppContext">
<Get name="securityHandler">
<Call name="setSessionRenewedOnAuthentication">
<Arg type="boolean">false</Arg>
</Call>
</Get>
</Configure>
这次找到了方法。我有一个问题:是pax-web中的错误还是我的Set方法做错了?