5

ステートレスまたは手動で維持された状態の Spring MVC アプリケーションに対して、Jetty 9 のすべての種類のセッション追跡機能を無効にしたいのですが、その方法を示す実際の例が見つかりませんでした。

次の/WEB-INF/spring-config.xmlタグを試しました。

...
<security:http use-expressions="true"
               disable-url-rewriting="true"
               create-session="stateless">
...

戦争中の次の/WEB-INF/jetty-web.xml記述子とともに:

<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Get name="sessionHandler">
        <Get name="sessionManager">
            <Set name="usingCookies" type="boolean">false</Set>
        </Get>
    </Get>
</Configure>

しかし、アプリケーションのページを開こうとするたびに、JSESSIONID Cookie を取得しています。理由と修正方法のヒントはありますか?

4

4 に答える 4

1

user100464 によって提案されたように、作成されたセッションを無効にする代わりに、誰かがセッションを開こうとするたびに例外をスローするHttpSessionListenerrequest.getSession()を使用しました。

public class PreventSessions implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        throw new UnsupportedOperationException("sessions are not allowed");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        throw new UnsupportedOperationException("sessions are not allowed");
    }
}
于 2015-03-05T10:25:21.260 に答える
0

Spring Boot を使用してPavel Horal が彼の回答で提案したことの実装は、次のとおりです。

import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Collections;

@Configuration
public class WebContainerConfiguration {
  @Bean
  public ServletContextInitializer servletContextInitializer() {
    return servletContext -> servletContext.setSessionTrackingModes(Collections.emptySet());
  }
}

私のためにうまく働いています。ありがとうございました!

于 2021-01-14T15:13:16.377 に答える