使用ssh一直找不到session,报错not found session in current thread

使用ssh一直找不到session,报错not found session in current thread,第1张

Hibernate4 与 spring3 集成之后, 如果在取得session 的地方使用了getCurrentSession, 可能会报一个错:“No Session found for current thread”, 这个错误的原因,网上有很多解决办法, 但具体原因的分析,却没有多少, 这里一个原理分析:

SessionFactory的getCurrentSession并不能保证在没有当前Session的情况下会自动创建一个新的,这取决于CurrentSessionContext的实现,SessionFactory将调用CurrentSessionContext的currentSession()方法来获得Session。在Spring中,如果我们在没有配置TransactionManager并且没有事先调用SessionFactoryopenSession()的情况直接调用getCurrentSession(),那么程序将抛出“No Session found for current thread”异常。如果配置了TranactionManager并且通过@Transactional或者声明的方式配置的事务边界,那么Spring会在开始事务之前通过AOP的方式为当前线程创建Session,此时调用getCurrentSession()将得到正确结果。

然而,产生以上异常的原因在于Spring提供了自己的CurrentSessionContext实现,如果我们不打算使用Spring,而是自己直接从hibernatecfgxml创建SessionFactory,并且为在hibernatecfgxml

中设置current_session_context_class为thread,也即使用了ThreadLocalSessionContext,那么我们在调用getCurrentSession()时,如果当前线程没有Session存在,则会创建一个绑定到当前线程。

Hibernate在默认情况下会使用JTASessionContext,Spring提供了自己SpringSessionContext,因此我们不用配置current_session_context_class,当Hibernate与Spring集成时,将使用该SessionContext,故此时调用getCurrentSession()的效果完全依赖于SpringSessionContext的实现。

在没有Spring的情况下使用Hibernate,如果没有在hibernatecfgxml中配置current_session_context_class,有没有JTA的话,那么程序将抛出"No CurrentSessionContext configured!"异常。此时的解决办法是在hibernatecfgxml中将current_session_context_class配置成thread。

在Spring中使用Hibernate,如果我们配置了TransactionManager,那么我们就不应该调用SessionFactory的openSession()来获得Sessioin,因为这样获得的Session并没有被事务管理。

至于解决的办法,可以采用如下方式:

1  在spring 配置文件中加入

<tx:annotation-driven transaction-manager="transactionManager"/>

并且在处理业务逻辑的类上采用注解

@Service

public class CustomerServiceImpl implements CustomerService {  

    @Transactional

    public void saveCustomer(Customer customer) {

        customerDaoImplsaveCustomer(customer);

    }

    

}

另外在 hibernate 的配置文件中,也可以增加这样的配置来避免这个错误:

<property name="current_session_context_class">thread</property>

问题:

ssh从到同一猫下的ubuntu电脑(从A到B),连接不上,提示:port 22: No route to host X X X X port 22: No route to host

解决办法:

1、 在A上ping B:ping xxxx(B):

From XXXX(B) icmp_seq=1 Destination Host Unreachable

From XXXX(A) icmp_seq=4 Destination Host Prohibited

从B上ping A是通的,在B上ssh A也时可以的

在B上查看防火墙是否打开:

a、service iptables status

b、systemctl status firewalld

如果有dead inactive,就是关闭的,有active runing就是打开的

关闭防火墙:

a、service iptables stop

b、service firewalld stop

然后查看端口22是否开放

firewall-cmd --query-port=22/tcp

如果打印no表示没有开放

开启端口:

firewall-cmd --permanent --add-port=22/tcp

然后再在A上ssh B,提示:

用提示的命令:

ssh-keygen -f "/home/xxx/ssh/known_hosts" -R "100040"

删除key,重新ssh成功

解决方法:

1、在网站目录上添加了IUSER_用户的访问权限,这个用户由IIS自动产生,后面的号为计算机名,经检查,IUSER_具有网站目录的访问权限,重新设置后,启用浏览仍然报同样的错误。

2、在IIS的默认网站同一级下面有一个WEB服务扩展,检查v2050727是否启用,结果没有发现这个选项(如果有的话,启用应该就可以)

3、增加Web服务扩展,在WEB服务扩展上点鼠标右键,点击“添加一个新的WEB扩展”,填写扩展名为ASPNet20(名称只要符合命名规则就可以,不一定是这个),在“要求的文件”中添加C:/WINDOWS/MicrosoftNET/Framework/v2050727/aspnet_isapidll文件,点上“设置扩展为允许”,再点击点击确定。

三种方法,一种是打开控制面板里面的系统管理——服务选项,找到sshd服务,手动执行启动。

另一种方式:打开cmd命令模式(win+R键,输入cmd,回车),执行 net start sshd即可。

最后一种方式:在cygwin控制台下,输入:cygrunsrv -S sshd。

以上就是关于使用ssh一直找不到session,报错not found session in current thread全部的内容,包括:使用ssh一直找不到session,报错not found session in current thread、ssh连接不上,显示port 22: No route to host、java web项目,ssh框架开发的放进学校tomcat 的web service目录没反应,链接都是显示404错resource不存在等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9689507.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存