精华内容
下载资源
问答
  • 升级理由一个是hibernate4支持multi-tenant多租户模式,对于提供saas应用项目来说,有这个与没这个有很大不同,尽管我已经在一个项目中实现了多租户模式,跟hibernate要做第二种模式类似;另一个理由就是...
    年初两个版本刚刚发布,还处于“血淋淋”的边缘,花了两天时间把所做的基于sh的一个框架进行升级,其过程有些纠结,写在这里做一备忘。

    为什么要升级?升级的理由一个是hibernate4支持multi-tenant多租户模式,对于提供saas应用的项目来说,有这个与没这个有很大不同,尽管我已经在一个项目中实现了多租户模式,跟hibernate要做的第二种模式类似;另一个理由就是spring支持servlet3.0,并且对提供cache api,速度当然是主要考虑点。

    没想到遇到很多问题,按网络流行语说是有点“蛋疼”。

    幸亏框架是用maven进行管理,升级版本过程比较顺利,主要改写pom中的依赖:
    hibernate pom dependency:

    Xml代码  收藏代码
    1. <dependency>  
    2.         <groupId>org.hibernate</groupId>  
    3.         <artifactId>hibernate-entitymanager</artifactId>  
    4.         <version>4.1.1.Final</version>  
    5. </dependency>  


    spring pom dependency:

    Xml代码  收藏代码
    1.               <properties>  
    2.      <spring.version>3.1.1.RELEASE</spring.version>  
    3.        </properties>  
    4.               ....  
    5.               <dependency>  
    6.     <groupId>org.springframework</groupId>  
    7.     <artifactId>spring-core</artifactId>  
    8.     <version>${spring.version}</version>  
    9. </dependency>  
    10.   
    11. <dependency>  
    12.     <groupId>org.springframework</groupId>  
    13.     <artifactId>spring-expression</artifactId>  
    14.     <version>${spring.version}</version>  
    15. </dependency>  
    16.   
    17. <dependency>  
    18.     <groupId>org.springframework</groupId>  
    19.     <artifactId>spring-beans</artifactId>  
    20.     <version>${spring.version}</version>  
    21. </dependency>  
    22.   
    23. <dependency>  
    24.     <groupId>org.springframework</groupId>  
    25.     <artifactId>spring-context</artifactId>  
    26.     <version>${spring.version}</version>  
    27. </dependency>  
    28.   
    29. <dependency>  
    30.     <groupId>org.springframework</groupId>  
    31.     <artifactId>spring-context-support</artifactId>  
    32.     <version>${spring.version}</version>  
    33. </dependency>  
    34.   
    35. <dependency>  
    36.     <groupId>org.springframework</groupId>  
    37.     <artifactId>spring-orm</artifactId>  
    38.     <version>${spring.version}</version>  
    39. </dependency>  
    40.   
    41. <dependency>  
    42.     <groupId>org.springframework</groupId>  
    43.     <artifactId>spring-oxm</artifactId>  
    44.     <version>${spring.version}</version>  
    45. </dependency>  
    46.   
    47. <dependency>  
    48.     <groupId>org.springframework</groupId>  
    49.     <artifactId>spring-aop</artifactId>  
    50.     <version>${spring.version}</version>  
    51. </dependency>  
    52.   
    53. <dependency>  
    54.     <groupId>org.springframework</groupId>  
    55.     <artifactId>spring-jdbc</artifactId>  
    56.     <version>${spring.version}</version>  
    57. </dependency>  
    58.   
    59. <dependency>  
    60.     <groupId>org.springframework</groupId>  
    61.     <artifactId>spring-webmvc</artifactId>  
    62.     <version>${spring.version}</version>  
    63. </dependency>  
    64.   
    65. <dependency>  
    66.     <groupId>org.springframework</groupId>  
    67.     <artifactId>spring-web</artifactId>  
    68.     <version>${spring.version}</version>  
    69. </dependency>  
    70.   
    71. <dependency>  
    72.     <groupId>org.springframework</groupId>  
    73.     <artifactId>spring-test</artifactId>  
    74.     <version>${spring.version}</version>  
    75. </dependency>  


    注意maven2的repository还没有最新版本,需要配置:

    Xml代码  收藏代码
    1. <repository>  
    2.       <id>springsource-repo</id>  
    3.       <name>springsource repository</name>  
    4.       <url>http://repo.springsource.org/release</url>  
    5. </repository>  
    6.   
    7. <repository>  
    8.         <id>repository.jboss.org-public</id>  
    9.         <name>JBoss repository</name>  
    10.         <url>https://repository.jboss.org/nexus/content/groups/public</url>  
    11.  </repository>  


    由于spring3.1.1基于servlet3.0,因此需要将原先2.5的接口进行版本指定:

    Xml代码  收藏代码
    1. <dependency>  
    2.         <groupId>javax.servlet</groupId>  
    3.         <artifactId>javax.servlet-api</artifactId>  
    4.         <version>3.0.1</version>  
    5.         <scope>provided</scope>  
    6. </dependency>  


    spring3.1.1为了支持hibernate4,相关部分做了很大改动,除了一步步排错,别无他法,而且这些错误会因项目不同而异,即case by case根据项目实情来改。这里将常见的几个错误以及解决办法罗列如下:

    错误1:java.lang.NoClassDefFoundError: org/hibernate/cache/CacheProvider
    原因:spring的sessionfactory和transactionmanager与支持hibernate3时不同。
    解决:
    Xml代码  收藏代码
    1. <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
    2.     <property name="dataSource" ref="dataSource"/>  
    3.     ...  
    4. </bean>  
    5.   
    6.   
    7. <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
    8.     <property name="sessionFactory" ref="sessionFactory"/>  
    9. </bean>  


    错误2:java.lang.NoSuchMethodError:
    org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session
    原因:hibernate4之后,spring31把HibernateDaoSupport去除,包括数据访问都不需要hibernatetemplate,这意味着dao需要改写,直接使用hibernate的session和query接口。
    解决:为了改写dao,足足花了一天时间,然后一个个接口进行单元测试,这是蛋疼的一个主要原因。

    错误3:nested exception is org.hibernate.HibernateException: No Session found for current thread
    原因:发现一些bean无法获得当前session,需要把之前一些方法的事务从NOT_SUPPORT提升到required,readonly=true
    见https://jira.springsource.org/browse/SPR-9020
    http://www.iteye.com/topic/1120924
    解决:
    Xml代码  收藏代码
    1. <tx:advice id="baseServiceAdvice" transaction-manager="transactionManager">  
    2.         <tx:attributes>  
    3.             <tx:method name="get*" read-only="true" propagation="REQUIRED"/><!--之前是NOT_SUPPORT-->  
    4.             <tx:method name="find*" read-only="true" propagation="REQUIRED"/><!--之前是NOT_SUPPORT-->  
    5.             <tx:method name="save*" propagation="REQUIRED"/>  
    6.             <tx:method name="update*" propagation="REQUIRED"/>  
    7.             <tx:method name="remove*" propagation="REQUIRED"/>  
    8.             <tx:method name="add*" propagation="REQUIRED"/>  
    9.             <!--默认其他方法都是REQUIRED-->  
    10.             <tx:method name="*"/>  
    11.         </tx:attributes>  
    12.     </tx:advice>  


    错误4:与错误3报错类似,java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibe
    rnate/classic/Session;
            at org.springframework.orm.hibernate3.SessionFactoryUtils.doGetSession(S
    essionFactoryUtils.java:324) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE]
            at org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(Ses
    sionFactoryUtils.java:202) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE]
            at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

    原因:因为opensessioninview filter的问题,如果你的配置还是hibernate3,需要改为hibernate4
    Xml代码  收藏代码
    1. <filter>  
    2.   <filter-name>openSessionInViewFilter</filter-name>  
    3.   <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>  
    4. </filter>  


    以上这些错误仅仅是将原有代码部署发现的,当然,随着继续深入,可能会有更多问题暴露出来,包括代码需要调整,新feature要使用,任重而道远。
    展开全文
  • 我们已经燃烧了一百多年汽油,但是对于燃料某些误解(尤其是在辛烷值方面)在大众意识中根深蒂固。我们通常使用“高辛烷值”来描述某些具有更高功率东西,或者更广泛地说是一种超级强烈体验。就汽油辛烷值而...
    bf0b4914ead464117f04f2b86ac1f67c.png

    我们已经燃烧了一百多年的汽油,但是对于燃料的某些误解(尤其是在辛烷值方面)在大众意识中根深蒂固。

    30610ce591b89bb90ff555fd7c0d6f0b.png

    我们通常使用“高辛烷值”来描述某些具有更高功率的东西,或者更广泛地说是一种超级强烈的体验。就汽油的辛烷值而言,情况并非如此:给定数量的87辛烷值气体具有与相同数量的高级燃料相同的存储能量。相反,辛烷值是燃料抗爆性的量度,其中燃料/空气充气在发动机气缸内爆炸不均匀,而不是平稳燃烧。这些爆炸(也称为发动机爆震)在最佳情况下会降低效率和输出,在最坏情况下可能会损坏发动机。因此,在汽车中使用正确的辛烷值燃料非常重要。

    180791337644e510c926610307e11a77.png
    9b2eada021d321af18d92c2083f4396c.png
    0775e097359fe43edc9b7275454967d8.png
    297a3df0034beba3a8ea6f8a6be3659b.png

    通常,由于技术的原因,现代汽车对饮用的饮料不太挑剔:例如,爆震传感器试图检测由于辛烷值不理想而引起的爆震并调整发动机正时以对其进行校正。这就是为什么一些较新的汽车只推荐优质燃料而不是要求的原因;使用辛烷值较低的汽油可能会降低效率和性能,但不会导致您的发动机损坏。

    无论如何,最好使用辛烷值过高的燃料,而不要使用过低的辛烷值的燃料,最坏的情况是,您在浪费金钱而没有性能或效率的提高。

    展开全文
  • 在对比了10次源代码和修改后代码才发现,原来是因为原程序已经通过编译在虚拟机上了,所以SQLIte数据库已经存在了,修改代码对于数据库并没有修改,所以修改程序之后显示和输出会错误。所以只需要卸载掉已经编译...

    今天编程对一个数据库进行更改,改了半天都不正确,改到怀疑人生。

    在对比了10次源代码和修改后的代码才发现,原来是因为原程序已经通过编译在虚拟机上了,所以SQLIte数据库已经存在了,修改代码对于数据库并没有修改,所以修改程序之后显示和输出会错误。

    所以只需要卸载掉已经编译执行好的程序,再加载一遍好了!

    叹气,耗了我将近3个小时。

    展开全文
  • 大家好,我有一个疑问,是... 函数在处理数据过程中发生错误,比如malloc返回NULL,这个时候函数返回-1表示出错,但对于已经处理一半数据是丢掉呢?还是一并返回了,让调用者得于不完全数据,自己进行处理?
  • SOCKET 10035错误

    千次阅读 2015-09-17 19:28:45
    对于一个异步SOCKET 常见10035错误 发生在 1 发送端要发送数据超过了 设置缓冲区大小,也就是发送缓冲区已经满了 这时候send会返回-1 GetLastError为10035 当一个异步SOCKET recv 接收不到数据时 也会...

    对于一个异步的SOCKET 常见的10035错误 发生在 1 发送端要发送的数据超过了 设置的缓冲区大小,也就是发送缓冲区已经满了 这时候send会返回-1 GetLastError为10035

    当一个异步的SOCKET       recv 接收不到数据时 也会产生这个错误

    展开全文
  • 常见的与内存有关的错误总结 对c语言的程序员来说,管理和使用内存...但是对于常见的内存错误如果很熟悉的话就会更早的发现与避免错误的发生。 下面我总结了常见的与内存有关的错误: 内存泄漏 内存泄漏通常
  • C语言常见内存错误总结

    千次阅读 2012-04-24 12:58:46
    与存储器有关的错误属于那些最令人惊恐的错误,因为他们经在运行的时间和空间上都在距错误根源很远的地方才表现出来,程序在最终失败之前已经运行了很长时间,而且程序终止的位置距离出错的位置已经很远了。...
  • 对于已经安装了Fiddler: 1. 清除C:\Users\Administrator\AppData\Roaming\Microsoft\Crypto\RSA 目录下所有文件(首次安装fiddler请忽略) 2. 清除电脑上根证书,WIN+R快捷键,输入:cer...
  • 发生的原因有可能超过系统对于最大数量信号灯集合(由参数SEMMNI表示),或者是对系统范围内最大可使用信号灯(由参数SEMMNS表示)的限制.您需要增加这两个系统核心参数的值。另外也可以通过i减小PostgreSQL参数max_...
  • 最近在编译protobuf-2.5.0源码的时候发现的错误已经应对方法 1. 在源码目录执行 ./configure 命令的时候,发生如下错误  error: C++ preprocessor "/lib/cpp" fails sanity check 2. 根据错误的提示,应该是对于...
  • Python作为比较便于编写编程语言之...这些错误和问题的发生主要是由于判断失误,对特定主题缺乏深入知识,或者仅仅可能是不小心导致。本篇文章总结了一些初学者常犯5种错误,这些错误虽然特别简单,但是对于...
  • 程序员不得不读的书前二就是 《程序员修炼之道》和《代码大全》 大学时曾读过《程序员修炼之道》,最近换工作转正答辩前要求重新读此书 ...对于已经发生的错误,重要的是如何处理来挽回局面,这样也
  • 在过去的几年中,我们一直在进行大量的代码审查,并且经常看到相同的错误不断发生。 那时我们决定创建Angular Checklist 。 这是精选的最佳实践列表,可以避免一些常见的陷阱。 因此,我们将许多最佳做法和常见...
  • 其实根本不是这样,这个时代已经发生了天翻地覆变化,消费者和受众再也不需要你教育他们、领导他们、引导他们,而是他们要参与,他们要表达内心愿望。如果你不跟着他愿望走话,就会让你事业惨败。我觉得...
  • 即使没有明显的错误,备库同样可能因为MySQL自身的特 性导致数据不一致,例如MySQL的Bug感、网络中断、服务器崩溃,非正常关闭或者其他一些错误。 按照我们的经验来看,主备一致应该是一种规范,而不是例外,也就是...
  • 但是,对于云服务提供商存储和保护关键业务信息态度已经发生了变化。  根据IDG企业调查显示,一些企业预计到2017年年底会将其59%IT环境迁移到云。对于企业机构而言,这是一个令人印象深刻数字,但也不是那么...
  • iOS 错误处理 (一)

    千次阅读 2013-07-30 17:45:51
    错误处理恐怕是开发过程中最让人难受的环节之一。在正常情况下让程序的各部分都正常工作已经是比较困难的了,一个好的应用应该在出错时也有得体的表现。...对于那些会预期发生的错误,应该得体的进行处理,不应该
  • 今天用VC++编译我这昨天写的代码时发现总是通不过,看到大部分的错误都是与一个类的定义有关。 明明我已经在这个类中定义了一个成员变量,可编译器偏要说那个变量不是这个类的成员。没办法,找了半天原因还是没有...
  • 贝叶斯决策理论(Bayes Decision Theory)贝叶斯决策...为样本空间 的一个划分,如果以 表示事件 发生的概率,且 。对于任一事件 , ,则有 贝叶斯决策理论分析如果我们已知被分类类别概率分布的形式和已经标记类别...
  • FreeRTOS常见错误排查

    千次阅读 2019-03-24 21:23:53
    每个TASK(任务)都有着自己独立维护栈空间,而栈空间在任务被创建时就已经设定,任务当前使用栈空间大小对于开发者来说至关重要。在RTOS中提供了多种跟踪辅助调试栈相关问题工具。 1,栈空间高水线函数 高水线...
  • 在操作MYsql数据库时,报“ error code [1267]; Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and ...对于常见乱码问题,有在数据库本身已经为gbk或gb2312时候,但是查询出来却是乱码,这是因为mysql
  • 编程错误总结(一)

    2015-12-15 20:13:00
    否则,会发生莫名其妙的错误. 2、在主线程中,runloop默认是开启状态的。非主线程中,如果要用到runloop,必须手动开启runloop。 3、对于常见的EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION,错误,一般都是因为访问已经...
  • 大家好!我们今天已经发布了《全民一起玩Python 提高篇》的第九回“with块管理文件显专业,try结构临危不乱解异常”,笔记与习题也已经上传到官网 ...”、“为什么要浪费那么多行代码去处理很少发生的意外?...
  • 目的: 对于用HttpWebRequest加载证书请求远端https服务器时,发生的 “基础连接已经关闭: 无法与远程服务器建立信任关系。”/ “The underlying connection was closed. Could not establish a secure SSL/TLS ...
  • 目的: 对于用HttpWebRequest加载证书请求远端https服务器时,发生的 “基础连接已经关闭: 无法与远程服务器建立信任关系。”/ “The underlying connection was closed. Could not establish a secure SSL/TLS ...
  •  1016 由注册表引起的 I/O 操作发生了不可恢复的错误。注册表将不能读取、写出或刷新包含注册表系统映像的其中一个文件。  1017 系统试图将文件加载或还原到注册表中,但是,指定的文件不是注册表文件格式。 ...
  • 数据库-五个实例错误整理

    千次阅读 热门讨论 2013-06-05 20:16:38
    红皮书五个实例已经敲完了,对于数据库... 在敲例子的过程中遇到了很多问题,笔记这时候就起到了很好的作用,翻翻笔记知道自己哪里出错了,以后会更加注意,避免发生同样的错误。以下是错的比较多的问题整理出来和大家
  • 从学习编程到投入实际开发,犯无知的错误必定会发生。即使是在最好的项目中,尽管有彻底的测试、良好的文档及其最好的队员。每个人的局限性注定会在某一方面稍有不足。我们为我们的能力而自豪,对于我们的无知与错误...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 651
精华内容 260
关键字:

对于已经发生的错误