![](/img/trans.png)
[英]Spring : How to configure tomcat Datasource Programatically in Groovy DAO
[英]How to configure programatically the session tracking modes for Tomcat
我正在使用嵌入式tomcat服務器版本7.我想以編程方式使用會話跟蹤模式配置服務器(實際上我搜索了一種方法來擺脫jsessionid,即既不在cookie中也不在URL中)。 但是在org.apache.catalina.Context中沒有一個方法可以像在web.xml描述符文件中那樣簡單地配置這個屬性(我不能使用這樣的文件)。 那么最好的方法是什么?
我嘗試了上面的代碼
Context ctxt = tomcat.addWebapp(.......);
ctxt.getServletContext().setSessionTrackingModes(
my_modes);
但是這種方法因錯誤而失敗
java.lang.IllegalStateException: The session tracking modes for context / cannot be set whilst the context is running
at org.apache.catalina.core.ApplicationContext.setSessionTrackingModes(ApplicationContext.java:1235)
at org.apache.catalina.core.ApplicationContextFacade.setSessionTrackingModes(ApplicationContextFacade.java:611)
我嘗試使用https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/Context.html#addApplicationListener(java.lang.String) 。 contextInitialized上的監聽器設置跟蹤模式
servletContextEvent.getServletContext().setSessionTrackingModes(
EnumSet.copyOf(sessionTrackingModes));
但我不知道如何使用此偵聽器的實例配置tomcat,因為使用上一個方法Context.addApplicationListener,該方法采用偵聽器的className,並且在運行服務器時無法實例化我的偵聽器,因為缺少空構造函數(我的監聽器構造函數獲取sessionTrackingMode列表..無法配置)
[read-1] ERROR Aug 18 19:10:03 - Error configuring application listener of class xx.xx.xx.SessionTrackingListener
java.lang.InstantiationException: xx.xx.xx.SessionTrackingListener
at java.lang.Class.newInstance(Class.java:427)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:125)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4715)
..............
Caused by: java.lang.NoSuchMethodException: xx.xx.xx.xx.SessionTrackingListener.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
所以你建議一個更好的方法來做到這一點
使用SessionTrackingListener。 您正在使用的問題是它沒有默認構造函數。 如果您向其添加默認構造函數,它應該可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.