`

SSH使用Annotation整合问题

 
阅读更多

1.org.hibernate.AnnotationException: No identifier specified for entity: com.yangsang.is.User

明明我有加了Annotation @Id了啊。并且也有让Spring管理这些Model了啊。

 

解决方案:自己傻逼了。@Id写在setter方法上了,@Id应该写在getter方法上。Spring的@Autowired才应该写在setter上。

 

2.Hibernate纯采用Annotation开发。并且,整合Spring时无Hibernate.cfg.xml与XXX.hbm.xml文件。可采用如下模板:

applicationContext.xml文档

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation=" 
          http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
          http://www.springframework.org/schema/tx 
          http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context-3.0.xsd 
          http://www.springframework.org/schema/aop 
          http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" default-autowire="byName">
		<!-- 注意上面的default-autowire="byName",如果没有这个声明那么HibernateDaoSupport中的sessionFactory不会被注入 -->

	
	
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
		<property name="username" value="scott"></property>
		<property name="password" value="tiger"></property>
	</bean>
	
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		
		<property name="dataSource" ref="dataSource"/>
		
       	<property name="packagesToScan" value="com.yangsang.is.model"></property>
       
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
	</bean>
	
	
	<context:annotation-config></context:annotation-config>
	<context:component-scan base-package="com.yangsang.is"></context:component-scan>
	
	
	
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<aop:config>
		<aop:advisor pointcut="execution(* com.yangsang.spring.service.*Service.*(..))" advice-ref="txAdvice"/>
	</aop:config>

	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true"/>
			<tx:method name="query*" read-only="true"/>
			<tx:method name="find*" read-only="true"/>
			<tx:method name="load*" read-only="true"/>
			<tx:method name="*" rollback-for="Exception"/>
		</tx:attributes>
	</tx:advice>
	
	
	
</beans>
 

3.struts2的配置路径中默认是在/WEB-INF/classes。

方法一:

更改struts.xml的位置要注意还要补充struts-default.xml,struts-plugin.xml。不能只写自己自定义的 struts.xml的位置。

web.xml

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
        	<param-name>config</param-name>
        	<param-value>struts-default.xml,struts-plugin.xml,../struts-xml/struts.xml</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

方法二:

web.xml文档

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
        	<param-name>config</param-name>
        	<param-value>../struts-xml/struts.xml</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 struts.xml文档

<struts>
<include file="struts-default.xml" />
.....
</struts>

 注意:用<include>引用的xml文件也必须是完成的struts2的配置。实际上<include>在引用时是单独解析的xml文件,而不是将被引用的文件插入到struts.xml文件中。

 

4.更改spring配置文件的位置方法:

web.xml文档

	<context-param>
   	 	<param-name>contextConfigLocation</param-name>
    	<param-value>classpath:applicationContext.xml</param-value>
	</context-param>

5.java.lang.OutOfMemeryError:PerGen space。今天可是遇到太多次了啊!!!

CSDN的Jerry_Ran 写道
这一段时间,Eclipse总是死掉,几乎是稍微操作快一点就会死掉,几分钟一次,搞得人郁闷至极。浪费了不少时间,在网上搜了下,看到很多朋友也出现类似的情况,在网上求救,但是网上的办法都只是说通过修改eclipse.ini文件来加大Eclipse的内存。

自己试了下,发现不管用。今天,又死掉了,不过爆出一个经常出现的错误,大意是:permgen space导致内存溢出。实在忍无可忍,上网一搜,发现网络真是个好东西,尤其是对我们这种自学者而言,无疑是授业解惑的良师益友。

这里总结一下自己的经验和网友的经验,希望能够对受此问题折磨的朋友有所参考价值。

解决办法如下:

在eclipse.ini配置文件中加上以下两行
-XX:PermSize=128M
-XX:MaxPermSize=128M

加上上2行后,我的eclipse.ini文件如下所示:

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
-vmargs
-Xms256m
-Xmx512m
-XX:PermSize=128M
-XX:MaxPermSize=128M

这里的内存大小根据自己的物理内存情况来决定吧。

从网上的资料看PermSize大一点肯定更好,而且最好是设置PermSize和MaxPermSize一样大。理由如下:
PermSize 和MaxPermSize如果设置为相同还可以在一定程度上提高性能,因为,PermSize在不断的变化中会需要转移其中的数据。如果固定了以后,则可以减少每次扩大PermSize带来的性能损失。



1、PermGen space简介

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。

说说为什么会内存益出:
(1)这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同。
(2) GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。


解决方法: 手动设置MaxPermSize大小

修改TOMCAT_HOME/bin/catalina.sh,在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存。
 

 

 

特别感谢:

基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发(2)

struts2设置加载非默认路径的struts.xml文件的方法

PermGen space简介




0
0
分享到:
评论

相关推荐

    SSH2-Annotation.rar_annotation ssh2_ssh2_ssh2 annotation

    4. **SSH2 Annotation的整合**:在SSH2-Annotation项目中,Spring、Hibernate和Struts2通过注解进行了深度融合。Spring通过扫描注解找到并初始化Bean,Hibernate通过注解解析实体类与数据库表的映射,Struts2则通过...

    ssh2 Annotation注解 框架+oracle

    **整合SSH2和Oracle** 1. **配置**: 在Spring配置文件中,我们需要配置DataSource、SessionFactory以及Hibernate的C3P0连接池。 2. **实体类**: 使用Hibernate注解定义Java对象,映射到Oracle数据库的表。 3. **DAO...

    java SSH项目 hibernate annotation

    7. **整合与配置**:SSH项目的整合涉及到Spring配置文件中对Struts、Hibernate的配置,以及这三个框架之间的交互。例如,Spring管理Struts的Action,Hibernate的数据源和SessionFactory等。 8. **测试与部署**:在...

    ssh注解方式整合项目

    然而,随着Java开发的进步,注解(Annotation)的使用越来越广泛,它简化了配置,提高了开发效率。本文将详细讲解如何通过注解方式整合SSH项目。 首先,我们从Spring框架开始。Spring通过注解可以实现依赖注入...

    基于annotation的SSH整合

    在实际的SSH Annotation整合中,我们还需要对web.xml和struts.xml进行适当的调整,比如启用Spring的注解驱动,配置Struts2的注解扫描等。同时,为了减少代码中的硬编码,可以使用Spring的`@Value`注解来注入配置参数...

    SSH整合-XML版和Annotation版

    下面我们将深入探讨SSH整合的XML版和Annotation版的区别与应用。 **Struts2** 是MVC(模型-视图-控制器)框架,用于处理用户请求并展示结果。在XML版中,所有的动作配置、拦截器链等信息都写在struts.xml文件中。而...

    ssh2全annotation配置模板

    这个“ssh2全annotation配置模板”旨在提供一个简洁且高效的整合示例,利用注解(Annotation)来减少XML配置文件的复杂性。接下来,我们将详细讨论SSH2框架中的各个组件以及它们如何通过注解进行配置。 首先,...

    ssh整合(annotation方式)

    版本:hibernate 5.0.7 spring4.2.4 struts2.3.24 Tomcat版本:Tomcat7 已测通基础的自动建表,以及插入数据功能

    SSH整合例子(SSH例子)

    SSH整合是Java开发中一种常见的框架组合,包括Spring、Struts...通过学习这个例子,开发者能够理解如何将Spring、Struts和Hibernate整合在一起,以及如何使用AOP进行事务管理,这对于提升Java Web开发技能非常有帮助。

    ssh2整合步骤

    SSH2整合指的是在Java开发中将Spring、Struts2和Hibernate三个开源框架集成在一起,以构建高效、灵活的企业级Web应用程序。在这个过程中,Spring提供依赖注入和事务管理,Struts2负责视图和控制层,而Hibernate则...

    ssh简单整合,后续会更新和bootstrap的整合

    在Spring中,可以使用`&lt;tx:annotation-driven&gt;`标签启用注解式事务管理。 3. **配置Struts2** - 创建`struts.xml`配置文件,定义Action类及其对应的Action配置、结果页面等。 - 集成Spring,使用`&lt;interceptors&gt;`...

    基于annotation 的ssh整合(2)

    ### 基于Annotation的SSH整合开发:Spring、Struts与Hibernate协同工作 #### 概述 本文将探讨如何在项目中实现基于Annotation的SSH(Spring、Struts、Hibernate)框架整合。随着技术的发展,XML配置逐渐被...

    SSH项目整合示例【源码】

    在这个SSH项目整合示例中,我们主要关注如何将这三个框架有效地集成在一起,实现数据持久化、业务逻辑处理以及视图展现的无缝协作。 1. **Struts2**:这是一个基于MVC设计模式的Java Web框架,负责处理HTTP请求并将...

    ssh整合----annotation

    本文将详细讲解使用注解方式进行SSH整合的步骤。 首先,我们需要准备一个开发环境,这里选择了Myeclipse6.5作为IDE,搭配JDK1.6和Tomcat6.0作为运行环境。SSH整合中的Struts2版本为2.1.8,Spring版本为2.5,...

    ssh2+oracle 全注解 annotation lib包

    在这个特定的上下文中,"ssh2+oracle 全注解 annotation lib包" 指的是一个包含了支持SSH2连接和Oracle数据库操作的Java库,且这个库全面采用了Java的注解(Annotation)技术。 注解在Java编程中是一种元数据,它...

    SSH(springmvc)框架整合

    在SSH整合完成后,开发者可以通过注解来定义控制器、服务和DAO层的类,比如使用`@Controller`、`@Service`、`@Repository`和`@Transactional`等注解。此外,还可以利用Spring AOP实现日志记录、权限控制等功能。 总...

    S2SH整合基于annotation

    在SSH Annotation整合中,通常会有一个`ssh_annotation`目录,可能包含以下文件和结构: 1. **配置文件**:如struts.xml、hibernate.cfg.xml、applicationContext.xml等,它们定义了框架的配置信息,但使用...

Global site tag (gtag.js) - Google Analytics