ssh 找不到 action

简介: 引用:http://blog.csdn.net/FastThinking/article/details/4060813   这个困扰我已久的问题终于解决了,让我又一次坚信是问题总有办法解决的,没有什么奇奇怪怪的问题,特别是在编程方面,出 问题了总有原因,你找不到原因所在并不等于没有原因.

引用:http://blog.csdn.net/FastThinking/article/details/4060813

  这个困扰我已久的问题终于解决了,让我又一次坚信是问题总有办法解决的,没有什么奇奇怪怪的问题,特别是在编程方面,出

问题了总有原因,你找不到原因所在并不等于没有原因. 
        记得在几个月前就想好好学习一下struts,spring和hibernate,也就是我们常说的SSH,但是因为一个异常始终没有得到解决,

也使我暂时放下了对SSH的深入学习,而这个异常就是这篇日志要主要讲到的. 
        我用的开发工具Myeclipse6.0,在做struts1.2整合spring2.0时,用spring代理action,没有任何问题;做过struts1.2整合

hibernate3.0时也没有遇到问题;但就是在做SSH三者整合的时候出现问题了.我用ssh做了个简单的用户注册的例子,当请求action的

时候,页面报"Http 404 Servlet action is not available ",但是后台没有任何异常信息;这种错误往往是最难以解决的.于是通过

google搜索,发现许多ssh初学者都遇到过同样的问题,也有不少人因此放弃了对SSH的学习;当然网上也有不少的解决方案,这些解决方

案我把它归为两类: 
        第一种是说一定是配置文件出错,说要仔细查看struts和spring的配置文件,因为404很容易就让人想到"没有找到(not

found)" . 
        第二种是说在ssh三者整合时,容易发生jar冲突,主要是spring和hibernate共用的一些jar 文件发生冲突. 
        我反复查对过书本上的实例,在网上也看过不少网友发的SSH整合实例,我坚信struts和spring配置文件是没有问题的,所有我

觉得问题应该和第二种类似,jar包冲突.网上很多朋友都说删除"asm-2.2.3.jar"就OK了,但是删除后发现问题依旧,再加上除了404外,

后台也没有任何异常信息,这也是几个月前我暂时停止学习ssh的原因吧. 
        这也得益于经验的积累,才有今天此问题的解决.虽然在公司几个月期间,大都是直接用JSP开发,没有用到SSH,但经常维护一

些SSH做的项目,又基本天天都少不了看tomcat的logs,这也使我意识到了日志的重要性. 
        周末了,也让我有时间又有了再一次学习SSH的想法.在网上找了个视频的SSH整合实例讲解,一边听一边跟着做,很快就完成了

一个最简单的注册实例,可是在运行的时候,头疼的问题又来了,几个月不见的老朋友又回来了---"http 404 Servlet action is not

available",重复了以前的google搜索,问题还是没能得以解决.这时我想到了一个重要的工具:log4j 
        在项目的src目录下建立了一个log4j.properties文件,加入以下内容: 
log4j.rootLogger=info,A1 
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.A1.Append=true 
log4j.appender.A1.File=D:/log4j.log 
log4j.appender.A1.DatePattern = '.'yyyy-MM-dd'.log' 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} Method:  %l%n%m%n 
其中D:/log4j.log是日志文件所在目录. 
保存好后重启tomcat,这时你会发现,虽然在控制台没有任何异常信息,但是在日志log4j.log中却可以看到错误所在,会发现有如下异

常信息: 
[ERROR] 2009-01-11 22:33:23 Method:  org.springframework.web.struts.ContextLoaderPlugIn.init

(ContextLoaderPlugIn.java:229) 
Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in

ServletContext resource [/WEB-INF/springContext.xml]: Invocation of init method failed; nested exception is

java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not

match signer information of other classes in the same package 
Caused by: 
java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not

match signer information of other classes in the same package

[ERROR] 2009-01-11 22:33:23 Method:  org.apache.catalina.core.ApplicationContext.log(ApplicationContext.java:676) 
action: null 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in

ServletContext resource [/WEB-INF/springContext.xml]: Invocation of init method failed; nested exception is

java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not

match signer information of other classes in the same package 
Caused by: 
java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not

match signer information of other classes in the same package 
有了异常信息就好办多了,google一下,很快就找到了原因和解决办法,主要是因为myeclipse为项目自动加入的commons-

beanutils.jar和commons-collections.jar相冲突,还有asm-2.2.3.jar ,解决方法主要有以下二点: 
    1.删除myeclispe自动加入的asm-2.2.3.jar 
    2.去www.apache.org官方网下载commons-beanutils-1.8.0.jar文件,替换myeclispe自动加入的commons-beanutils.jar包 
    重新部署,启动tomcat后,会发现日志的最后一行信息为: 
ContextLoaderPlugIn for Struts ActionServlet 'action', module '': initialization completed in 9765 ms 
好了,这说明问题已经解决了,测试一下,果然运行正常,没有问题了. 
        希望本日志能帮助出现同样问题的朋友,最后提醒一句:为项目加入日志是非常有帮助的,能够便于你测试及监测系统运行的

状态,感谢log4j,是它帮我解决了这困扰我已久的问题.

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
网络安全
【SSH快速进阶】——struts2调用action的三种方式
经过前段时间对struts2的学习与实践,总结了一下在struts2中调用action的三种方式。
|
网络安全
SSH框架整合遇到的错误——Struts2.5 action跳转出现错误
错误信息如图: 刚开始以为是struts2的配置问题,就换了一下action的值,改成了login1之后才发现错误。 表单提交的跳转信息: Struts2.xml中的配置 UserAction.java中的配置   action的跳转方法不能有参数,手误写了参数,导致action找不到login1方法。
1368 0
|
1月前
|
安全 Linux Shell
Linux SSH(Secure Shell)服务
Linux SSH提供安全网络协议,使用公钥加密技术确保远程服务传输安全。OpenSSH是实现SSH服务的免费开源工具,允许用户加密连接远程登录Linux服务器执行任务。SSH比Telnet更安全,防止数据被截获。SSH还支持端口转发和隧道,广泛应用于系统管理和网络维护,是安全远程访问服务器的重要工具。
34 1
|
1月前
|
安全 Shell Linux
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
52 0
|
1月前
|
Linux 网络安全 数据安全/隐私保护
SSH工具连接远程服务器或者本地Linux系统
SSH工具连接远程服务器或者本地Linux系统
47 0
|
1月前
|
存储 安全 Linux
|
1月前
|
监控 安全 Linux
【专栏】Linux SSH 的安全对于远程管理至关重要,这几个小妙招安排上!
【4月更文挑战第28天】在数字化时代,Linux SSH 的安全对于远程管理至关重要。增强 SSH 安全包括:使用强密码,调整 SSH 配置文件,尤其是端口号和认证方式;采用密钥认证代替密码;限制登录用户,禁止密码登录;使用防火墙限制访问;定期更新系统和软件。此外,通过日志监控、入侵检测系统及及时应对攻击来提升安全监控。保持对安全知识的学习和更新,结合最佳实践,是保障 SSH 安全的关键。记得安全是个持续过程,时刻保持警惕!
|
5天前
|
运维 Linux 网络安全
跨平台SSH文件传输:Linux与Windows环境下的实践指南
本文介绍了在Linux和Windows之间使用SCP、SecureCRT及PuTTY工具集进行文件传输的方法。在Linux中,利用SCP命令进行文件下载、上传及目录传输。在Windows环境下,PSFTP和PSCP提供类似功能,而SecureCRT作为SSH客户端,支持设置上传下载目录并进行文件传输。掌握这些工具的使用可提升跨平台运维效率。
|
11天前
|
Ubuntu Linux 网络安全
ubuntu linux 搭建 webssh 网页ssh远程登录其他服务器
ubuntu linux 搭建 webssh 网页ssh远程登录其他服务器