突然接到任务,不知道哪里来的老项目SSH(Struts2+Spring+Hibernate)要跑起来,项目的依赖以及配置都是残缺的。看了下项目的创建时间,大概是08年的,瞬间泪目,之前是用的JBoss服务器部署的,开发工具使用的是Red Hat Developer Studio
后来花了大概两天时间把项目跑起来了,开发环境改为IDEA,服务器选择Tomcat部署,将其中的一些问题做个总结。
一、依赖的jar
因为项目比较老,没有使用maven管理依赖,直接使用炸包的方式,所以我也就没有用maven,建了个lib文件夹,把需要的jar都扔进来,然后鼠标右键,Add as Library,添加到依赖库如图:
然后点击Project Structure图标或者使用快捷键Ctrl+Alt+Shift+S打开项目配置,在Artfacts中点击fix将jar添加到项目中,如图:
最后本项目总共依赖的jar如下:
二、配置SessionFactory和DataSource
因为数据访问层需要Session工厂和数据源,所以配置如下:
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/xxx" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>com/xxx/xxxx/xxx.hbm.xml</value><!-- 映射文件路径 -->
<value>com/xxx/xxxx/xxx.hbm.xml</value><!-- 映射文件路径 -->
....
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
</value>
</property>
</bean>
<!-- 数据访问层引用session工厂和数据源 -->
<bean id="xxxDAO" class="com.xxx.xxx.dao.impl.xxxDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="xxDAO" class="com.xx.xx.dao.impl.xxDAO">
<property name="dataSource" ref="dataSource" />
</bean>
三、Struts2单元测试
单元测试记得要导入struts2-junit-plugin-2.3.1.2.jar和junit-4.10.jar两个炸包,然后创建一个测试类继承TestCase,如下:
public class TestAction extends TestCase {
private UserService userService;
private XmlWebApplicationContext ctx;
@Test
public void test() throws Exception {
//获取ApplicationContext对象
ApplicationContext applicationContext = new FileSystemXmlApplicationContext( "D:\\xxx\\xxx\\web\\WEB-INF/applicationContext.xml" );
//通过ApplicationContext获取UserService对象
userService = (UserService) applicationContext.getBean( "userService" );
userService.deleteById( 1l );
}
}
四、打war包
1.选中项目右键点击Open Module Settings,如下图:
2.检查Modules 里面是否有Web,如果没有web,点击+号添加Web,我这里是有的
3.点击Artifacts添加Web Application:Exploded和Web Application:Archive,自己命名,然后点击Apply->OK
4.最后点击Build->Buid Artifacts即可创建
5.在你的导出目录里可以看到,我的是在项目目录的\out\artifacts目录下,如图:
6.将ROOT_war重命名为ROOT或者你的项目名放在tomcat的webapp目录下,启动tomcat即可访问
总结起来好像也没什么,但是经历的过程只有自己知道。
注意:后来发现commons-lang3-3.4.jar版本低了,报一个No such Method的一个异常,替换成commons-lang3-3.7.jar,移除commons-lang3-3.4.jar即可。异常信息如下:
java.lang.NoSuchMethodError: org.apache.commons.lang3.reflect.MethodUtils.getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;ZZ)Ljava/lang/annotation/Annotation;
登录成功之后又报下面的错,缺少antlr-2.7.6.jar,添加即可
Caused by: java.lang.NoClassDefFoundError: antlr/ANTLRException
拓展:Navicate插入或修改BLOB类型数据
点击BLOB类型的字段然后点击备注,在下方即可修改或插入BLOB类型的值,如图:
关注我的微信公众号获取更多资源

本文记录了作者如何在两天内让一个08年的SSH(Struts2+Spring+Hibernate)项目重新运行,包括解决依赖问题,配置SessionFactory和DataSource,进行Struts2单元测试,以及打包部署的全过程。
303

被折叠的 条评论
为什么被折叠?



