2010-09-02 5 views
1

J'ajoute des fonctionnalités à une ancienne application EJB 2 en utilisant Spring. Le contexte d'application Spring utilisé par les EJB est un contexte parent de l'application Web tel que décrit here. J'essaye d'utiliser un bean de portée de session à partir des EJBs. Le bean en question est initialisé à partir du contexte de l'application EJB.Bean session session de printemps dans EJB 2 Bean Session sans état

Cependant, je reçois cette erreur lorsque vous essayez d'accéder à la fève:

Caused by: java.lang.IllegalStateException: No Scope registered for scope 'session' 

From what I've read, En effet, le parentContextKey n'est pas une instance de WebApplicationContext. Est-ce que quelqu'un a une idée de comment je pourrais obtenir ce travail?

Répondre

2

Vous pouvez essayer d'enregistrer le champ manuellement:

<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer"> 
    <property name="scopes"> 
     <map> 
      <entry key="session"> 
       <bean class="org.springframework.web.context.request.SessionScope"/> 
      </entry> 
     </map> 
    </property> 
</bean> 

Je suppose que cela devrait fonctionner, parce que SessionScope lui-même ne dépend que du contexte de la demande liée fil exposée par le RequestContextListener et ne dépend pas de l'application le contexte.

+0

Exactement ce dont j'avais besoin. Merci! –

0

Vous ne pouvez utiliser des fèves Spring de portée session qu'à l'intérieur d'un ressort WebApplicationContext. Il n'y a pas moyen de contourner cela - pas de WebApplicationContext, pas de portée de session. Peut-être que si vous expliquiez ce que vous essayez d'atteindre, nous pourrions vous aider davantage. Êtes-vous en train de confondre les EJB de session avec état avec des sessions de servlet? Ce ne sont pas la même chose.

Questions connexes