2017-12-19 32 views
0

Widlfy 10을 사용하고 있지만 Wildfly에서 사용하는 DistributableSessions를 사용하고 싶지 않습니다. (일부 세션 처리 문제가 있으며 기본 수준에서 디버깅해야 함). 언더 토우 (Undertow)에는 InMemorySessionManager이 있는데 그 대신 오히려 대신 사용할 것입니다. 하지만 다른 SessionManager를 지정하는 방법을 알아낼 수 없었습니다.Wildfly 10 InMemorySessionManager를 활성화하는 방법은 무엇입니까?

나는 로컬 캐시로 내 제이보스 캐시를 구성하려고했습니다 :

 <subsystem xmlns="urn:jboss:domain:infinispan:4.0"> 
      <cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server"> 
       <transport lock-timeout="60000"/> 
       <replicated-cache name="default" mode="SYNC"> 
        <transaction mode="BATCH"/> 
       </replicated-cache> 
      </cache-container> 
      <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan"> 
       <local-cache name="passivation"> 
        <locking isolation="REPEATABLE_READ"/> 
        <transaction mode="BATCH"/> 
        <file-store passivation="true" purge="false"/> 
       </local-cache> 
       <local-cache name="persistent"> 
        <locking isolation="REPEATABLE_READ"/> 
        <transaction mode="BATCH"/> 
        <file-store passivation="false" purge="false"/> 
       </local-cache> 
      </cache-container> 
... 
... 

그러나, 내 응용 프로그램을 디버깅, 나는 아직도 제이보스 대신 DistributableSessionManagerDistributableSession의를 사용하는 것을 알 수있다.

어쨌든 Undertwo의 InMemorySessionManager을 사용할 수 있습니까? 나 자신의 ServletExtension과 Factory를 생성하고 META-INF/services/io.undertow.servlet.ServletExtension에서 구성하기위한 노력을해야합니까? 아니면 이미 사용할 수있는 out-of-the-box 방식이 있습니다. 구성 파일을 통해 존재합니까? 또는 Undertow/Wildfly 포장의 일부로 필수 클래스가 이미 존재합니까?

+0

응용 프로그램이' '으로 표시되어 있습니까? –

+0

@FedericoSierra 아니요 - 적어도 web.xml에는 없습니다. 그래서 내가 그렇게 이상하게 느껴진다. Wildfly에 모든 배포를 배포 가능하게하는 설정이있을 수 있습니까? –

+0

테스트 목적으로 웹 캐시 컨테이너를 제거해보십시오. –

답변

2

분산 세션 관리자의 사용이 발생할 경우에만 조건이 있습니다

web.xml에
  1. 귀에서 웹 응용 프로그램에서 공유 세션을 사용하여
  2. , 공유 세션-config.xml 파일을 통해

이미 # 1이 아니라고 말한 것을 감안할 때 # 2라고 가정합니다. 공유 세션에 대한 분산 세션 관리자의 사용을 비활성화하려면 배포판에서 org.wildfly.clustering.web.undertow 모듈을 제거하십시오.

+0

사실, 공유 세션을 사용하여 내 귀에 2 회의 전쟁을 공유합니다. DistributedSessions을 강제/암시한다는 것을 몰랐습니다. 내 문제의 근본 원인은 Undertow SessionManager를 사용하여 ID로 세션을 검색하고이를 무효화하려는 것이지만, DistributedSessions로는 불가능합니다 (SessionManager는 ImmutableDistributedSession을 반환 함). 세션 관리자 또는 세션이 반환하는 언더 토 세션을 통해 분산 세션을 무효화 할 수 있습니까? –

+0

왜 SessionManager를 통해 세션을 무효화합니까? HttpSession.invalidate()를 호출 할 수 있습니까? –

+0

난 레거시 JBoss3/JB4 응용 프로그램에서 일해 왔으며 원래 설계된 방식은 일련의 비즈니스 규칙을 기반으로 세션을 무효화하기 위해 백그라운드 프로세스를 사용하는 것이 었습니다. WF10으로 이동하면 동일한 세션 관리가 허용되지 않습니다. 그래서 모든 백그라운드 프로세스를 찢어 내고 세션 무효화를 일부 비즈니스 로직 도우미 클래스에 기반한 필터로 옮겼습니다. 따라서이 시점에서 질문은 논박의 대상이됩니다. –