小编use*_*224的帖子

在Spring中获取关联的websocket会话的HTTPSession

我有一个使用stomp的简单Web套接字应用程序.当用户访问页面时,它将自动与服务器建立一个stomp连接.用户通过弹簧安全性进行身份验证.当用户关闭浏览器时,我希望用户自动注销.为此,我创建了一个监听器来监听SessionDisconnectEvent.问题是我没有与websocket会话相关的httpSession句柄?有没有想从websocket会话中获取httpsession?

这是我的代码:

<websocket:message-broker application-destination-prefix="/test">

        <websocket:stomp-endpoint path="/sbapp">
            <websocket:handshake-interceptors>
                <bean class="com.sample.HttpSessionIdHandshakeInterceptor"></bean>
            </websocket:handshake-interceptors>
            <websocket:sockjs />
        </websocket:stomp-endpoint>
        <websocket:stomp-broker-relay prefix="/topic,/queue,/user" relay-host="localhost" relay-port="61613"/>
    </websocket:message-broker>
Run Code Online (Sandbox Code Playgroud)

这是我的websocket会话监听器:

@Component
public class StompDisconnectListener implements ApplicationListener<SessionDisconnectEvent>{

    @Override
    public void onApplicationEvent(SessionDisconnectEvent event) {

        System.out.println("Stomp disconnect: " + event.getSessionId());
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要一种方法,当我得到一个断开事件时,我得到相应的HttpSession然后手动注销HttpSession.这可能吗?

spring-mvc spring-security spring-websocket

5
推荐指数
2
解决办法
1万
查看次数

org.hibernate.HibernateException:无法获取当前线程的事务同步会话

我试图使用hibernate 4创建一个简单的spring mvc应用程序.我在这里包含了我的配置和相应的dao,service和controller类.当我访问控制器时,我收到错误,我无法弄清楚问题的来源.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <context:annotation-config />
    <context:component-scan base-package="com.test" />
    <import resource="security-context.xml"/>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/test" />
        <property name="username" value="root" />
        <property name="password" value="123" />
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="com.test.model" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>

    <tx:annotation-driven/>
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

</beans>
Run Code Online (Sandbox Code Playgroud)

这是我的服务层

@Service
@Transactional …
Run Code Online (Sandbox Code Playgroud)

hibernate transactions spring-mvc

2
推荐指数
1
解决办法
1万
查看次数