qqjianyue代码工

砌java代码
posts - 62, comments - 9, trackbacks - 0, articles - 10
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

The prefix "tx" for element "tx:advice" is not bound

这个错误的原因很简单是:

我们在定义申明AOP的时候。。没有加载schema。

具体表现如下:

<beans>

 <tx:advice id="txAdvice" transaction-manager="transactionManager">  
     <tx:attributes>  
         <tx:method name="get*" read-only="true"/>  
         <tx:method name="*" propagation="REQUIRES_NEW" rollback-for="Exception"/>  
     </tx:attributes>  
 </tx:advice>

 <!-- aop代理设置-->  
 <aop:config proxy-target-class="true">   
....

 </aop:config>

</beans>

这时会抛出异常不认<TX>标签。。起先还以为是没有加载JAR包呢。。

后来读AOP文档才发现<beans>中要加入“xmlns:aop”的命名申明,并在“xsi:schemaLocation”中指定aop配置的schema的地址

配置文件如下:

<?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"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
                    
http://www.springframework.org/schema/beans/spring-beans.xsd
                    
http://www.springframework.org/schema/tx
                    
http://www.springframework.org/schema/tx/spring-tx.xsd
                    
http://www.springframework.org/schema/aop
                    
http://www.springframework.org/schema/aop/spring-aop.xsd">

这些才是最关键的地方。。后面的配置不变。。。。

posted @ 2008-08-30 00:01 Qzi 阅读(1168) | 评论 (0)编辑 收藏

如果在/sandh/web-inf/classes下面没有ehcache.xml这个文件,会报这个错误,No configuration found.

Configuring ehcache from ehcache-failsafe.xml found in the classpath:.....这个文件是hibernate缓存配置文

 

<ehcache>
 <diskStore path="java.io.tmpdir"/>
 <defaultCache
    maxElementsInMemory="10000"
    eternal="false"
    timeToIdleSeconds="10000"
    timeToLiveSeconds="10000"
    overflowToDisk="true"
 />
  <cache  name="com.hour41.hibernate.vo.common.City"
    maxElementsInMemory="10000"
    eternal="false"
    timeToIdleSeconds="10000"
    timeToLiveSeconds="10000"
    overflowToDisk="true"
 />
</ehcache>

上面配置了默认类缓存和城市类缓存策略:

<diskStore>表示当内存缓存中对象数量超过类设置内存缓存数量时,将缓存对象写到硬盘,path=”java.io.tmpdir

”表示把数据写到这个目录下。Java.io.tmpdir目录在运行时会根据相对路径生成。
<defaultCache>表示设定缓存的默认数据过期策略。
<cache>表示设定用具体的命名缓存的数据过期策略。
name表示具体的缓存命名。
maxElementsInMemory表示cache中最大允许保存的对象数据量。
eternal表示cache中数据是否为常量。
timeToIdleSeconds表示缓存数据钝化时间
timeToLiveSeconds表示缓存数据的生命时间。
overflowToDisk表示内存不足时,是否启用磁盘缓存。 

 

将上面代码另存为ehcache.xml存放在lib/classes里面即可!

posted @ 2008-08-28 21:20 Qzi 阅读(3249) | 评论 (0)编辑 收藏

1:配置文件applicationContext.xml问题
    org.springframework.orm.hibernate3.HibernateTransactionManager 与  
    org.springframework.orm.hibernate3.LocalSessionFactoryBean出现问题.
    解决方法:
    这两个出现红色的小x其实是与三大框架集成的时候,包冲突有关,首先删除asm-2.2.3.jar 然后加入
    spring-hibernate3.jar,commons-pool.jar,commons-dbcp.jar包,上述的问题解决!

2:asm包问题
    spring与hibernate的冲突.两个框架都依赖asm.jar包spring的版本是asm-2.23.jar.hibernate依赖的是asm.jar 
    方法1:只删除asm-2.23.jar包
    方法2:所有asm开头的jar包,和一个cglib-2.1.3.jar都删除,上网下载一个最新的asm-all-3.0.jar加进去
两种方法都试一下,有些人方法1行,方法2不行,有些人相反。

3:使用MeEclipse的时候,可能的警告:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
CGLIB Enhancement failed
解决方案:
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
Hibernate使用如下lib:
asm.jar
asm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。
解决办法是:
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar

3:注意以上的删包要确保tomcat服务器里面的包也被删了,否则有残留的时候,测试出错。
所以在框架集成时经常遇到,包冲突与少包问题,大家注意一下!哈哈!

posted @ 2008-08-28 12:12 Qzi 阅读(2769) | 评论 (1)编辑 收藏

“从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界”
 错误的注意罗,下面是SQL Server下两种变量的详细介绍,时间值越界的明显就会报这个错误
 
datetime
smalldatetime

代表日期和一天内的时间的日期和时间数据类型。
 
  datetime

17531199991231的日期和时间数据,精确度为百分之三秒。如下表所示,把值调整到.000.003、或.007秒的增量。(曾经试过使用1752有错,1753就没有错了,郁闷啊!)

microsoft&reg;sqlserver™拒绝所有其不能识别为1753年到9999年间的日期的值。
  smalldatetime
190011207966的日期和时间数据精确到分钟。29.998秒或更低的smalldatetime值向下舍入为最接近的分钟,29.999秒或更高的smalldatetime值向上舍入为最接近的分钟。
  --returnstimeas12:35
  selectcast(2000-05-0812:35:29.998assmalldatetime)
  go
  --returnstimeas12:36
  selectcast(2000-05-0812:35:29.999assmalldatetime)
  go
 
注释
microsoftsqlserver
用两个4字节的整数内部存储datetime数据类型的值。第一个4字节存储basedate之前或之后的天数。基础日期是系统参考日期。不允许早于175311datetime值。另外一个4字节存储以午夜后毫秒数所代表的每天的时间。
smalldatetime
数据类型存储日期和每天的时间,但精确度低于datetimesqlserversmalldatetime的值存储为两个2字节的整数。第一个2字节存储190011后的天数。另外一个2字节存储午夜后的分钟数。日期范围从190011207966,精确到分钟。

posted @ 2008-08-28 11:34 Qzi 阅读(1670) | 评论 (0)编辑 收藏

第一条:javascript非常脆弱,请一定要小心,不要敲错一个单词,也不要异想天开地理解js函数,出现一点差错都搞死人。改善方法是:多点copy,使用firefox的firebug也是调试javascript的好方法。

1.getElementsByTagName(tagName)可以使用很多元素对象来调用,我没有全试过,所以不敢打包票,不过基本上就是你想要用到的标签,都可以使用它来获得他的子标签array,不管几层以内。

2.getElementById只能用用document对象来调用,你试一下看看div能否使用这个函数找到他的子标签,答案是否的。 页面上的id可以直接用作变量名来引用标签对象。

3.getElementsByName也只能用在document对象,然后不是任意一个标签都有name,注意有些标签没有name的,你异想天开地为任何标签都加个name属性,结果就是这个name并不能用来索引这个标签。

4.form元素里面的input元素可以通过.id或者.name的方式获得其中元素, 即使隔着div和table都可以. 但是div和table是无法这样从form中获得的, form里面的元素也无法从table和div中使用这种方法获得.

注意"s"的区别,唯一性

innerHTML属性可以改变span里面的值, 但是innerText却不行,不知道为什么.

最好的调试方法,alert函数。

以上不敢包正确,但是的确是我自己测试以后得来的,改变了自己以前很多的想法,原来设计者搞得那么卑鄙的,弄死人了。

欢迎补充,有关[]的使用来代替函数查找,我还没有试验。

posted @ 2008-08-27 18:57 Qzi 阅读(1009) | 评论 (0)编辑 收藏

javascript是经典的敏感性语言,小小问题都会导致整体功能出错。

自己调用document.form[0].submit()的时候,会出现submit is not a function错误(使用firefox的firebug调试,非常好用),原因是页面的form中出现具有name=submit的元素,这样会影响到javascript调用submit()函数,改掉那个name=submit的元素即可。

另外submit提交struts1.2的action时候,如果后面跟有?method=***等的参数,那么注意,这个函数里面不要出现有method等关键字。
例如函数:
function changeAction(methodArg, wayArg){
 with (document.forms[0]) {
  action="<html:rewrite page='/BgdInfoReportAction.do'/>?method="+ methodArg + "&way=" + wayArg;
  submit();
 }
}
使用?method=***是在使用dispatchAction时候的做法原来我的参数名称是method和way,
结果报错:Action[/BgdInfoReportAction] does not contain method named post
原因是?后的method变得没有效,那么这个submit提交使用默认的post方法提交(servlet默认分为post和get方法嘛),
后来我将method改成methodArg和way改成wayArg,这个action就能够正确执行。
我重复测试改与不改的效果,仍然与上面一样。总结原因可能是是javascript的一些关键字冲突,所以尽量使用特殊一点的字符串作为变量名。

posted @ 2008-08-27 15:42 Qzi 阅读(4059) | 评论 (1)编辑 收藏

安装cvsnt

直接双击运行cvsnt安装文件,安装过程中可以选择以经典、自定义和完全三种方式安装,在自定义方式中可以选择安装路径。安装完成后,在控制面板里出现一个CVSNT Server的项目,图标是一条鱼~~

配置cvsnt

安装完成cvsnt后,就可以从控制面板中那条鱼来配置cvsnt了。首先,你要新建一个目录用来存放cvs仓库,我用的是G:\CVSROOT。这里需要先了解两个概念:cvs仓库和模块。我是这样理解的,cvs仓库相当于VS里一个解决方案,它可以包含多个项目,即模块。

打开cvsnt的控制面板后,可以看到7个选项卡,分别是:Server Information,用于查看服务器信息及一些简单的统计信息;Respository configuration,配置CVS仓库,包括添加、删除等;Server Setting,配置服务器运行的一些参数,诸如端口、加密、压缩等选项;Capatiblity Options,有关兼容性的选项,在这里主要配置一个兼容非cvsnt客户端的版本响应为cvs 1.11.2;Plugins,插件配置,安装完成可以不用管的~;Advanced,安装完成后也不用管了;About,在这里可以管理cvsnt服务的状态,停止或启动cvsnt和cvsnt lock服务。

其实简单来说,custom换默认设置安装完成后,要设置的东西只有两个:cvs仓库和服务器设置。

服务器设置:设置Run as为系统管理员帐号Administrator,或者新建一个本地用户,专门用于cvs。使用一个新建的本地帐户的好处是可以使用NTFS的权限控制来保证服务器的安全,例如我当前的用户是flora。

CVS仓库设置:进入Respository configuration选项卡,点击Add,出现添加CVS仓库的对话框,Type选择Standard即可,然后在Location里输入之前新建的用于存放CVS仓库的文件夹,我用的是D:\cvs,在Name里会自动转换成一个可以用的CVS仓库的别名,比如我用的是“/cvs”,其他的都默认,确定后cvsnt会询问你所添加的CVS仓库目录没有初始化,是否进行初始化,点“是”就行了,cvsnt会自动初始化指定的目录,初始化完成之后,可以在里面看到一个CVSROOT的文件夹,这个文件夹存储很多配置信息的。

用户设置配置完CVS仓库后,为了使CVS能使用帐号进行访问而不是使用windows用户,需要添加普通使用用户。

打开cvs control panel(在开始菜单里面的快捷方式或者控制面板),server setting中run as 选择具有windows管理者权限的用户,应用。例如我当前的flora。在cvs control panel的about中重启一下cvs。


打开一个cmd,设置一下cvsroot环境变量,输入:

set cvsroot=:pserver:flora@127.0.0.1/cvs

注意,这里的flora是当前windows用户名,既run as中选择的那个,/cvs是之前添加的CVS仓库的别名,如果你的设置不同,请把它们替换成自己的值,以后不再说明。

接着cvs login命令登录CVS服务器,因为添加用户时没有设置密码,因此可以不输入密码直接回车登录:

添加普通新用户
cvs passwd -a -r flora jianyue
jianyue是你想新添加的用户名 flora指定现在用具有admin权限的用户来创建jianyue用户
否则出现错误信息:Only administrators can add or change another's password
这条命令后就可以设置这个用户的密码。
成功后可以使用这个用户了


在Myeclipse中连接cvs服务器:
在还没有没有添加cvs版本控制的工程上(已添加了的,菜单会有所不同)
在工程名上右键->team->share project->create a new repository location,填入必须的信息,像我的是本地的,就填:
host:localhost
Repository path:cvs(上面配置时候的那个仓库别名)
填上合适的用户名与密码,我这里是jianyue  密码hello
端口与类型,如果服务器没有修改过的话,都用默认的就行
这样子,这个工程文件就会被上传到CVSROOT目录上,本地的文件系统打开这个目录,也可以看见被上传的工程。
以后就可以方便的使用版本控制了。

上面的方法对于忘记用户密码的情况也可以解决,在cmd使用系统用户登陆cvs,就可以按照上面步骤重建那个用户,修改其密码,
cvs会默认覆盖这个用户。

posted @ 2008-08-22 11:21 Qzi 阅读(8807) | 评论 (0)编辑 收藏

出现warning log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).信息的经典处理方法:

在eclipse下工程的src目录下新建文件名为:log4j.properties
内容为:

log4j.rootLogger=WARN, Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n

log4j.logger.com.genuitec.eclipse.sqlexplorer=DEBUG
log4j.logger.org.apache=WARN
log4j.logger.org.hibernate=WARN

项目编译的时候会自动copy到WEB-INF/class目录下,这样tomcat启动的时候,就可以启动log4j消息机制。
这个机制的最大好处是将一般不会显示出来的问题显示在console上,方便发现隐秘的错误,特别是当你不知道哪里错,
但是网站的确有问题的时候。

posted @ 2008-08-21 14:54 Qzi 阅读(279) | 评论 (0)编辑 收藏

在tomcat的目录conf\Catalina\localhost下,可以增加xml文件,来指向file系统中任意一处作为网站系统的子根目录,例如:
atcs.xml文件:

<!--

    Context configuration file for the Tomcat Host Manager Web App

    $Id: host-manager.xml 303743 2005-03-11 22:39:26Z remm $

-->


<Context path="/atcs" docBase="D:\WorkSpace\Huadu_Atcs3\WebContent"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>

其中docBase指向站点的根目录,path与文件名相同(在此为atcs),这个path最好也要与docBase下的WEB-INF下的web.xml里面的 
  <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>atcs.root</param-value>
  </context-param>
paraam-value相同。
三者相同的情况下,才可以正确的访问网站(访问方式:http://localhost:8080/atcs)这样就作为localhost的一个子站点可以运行了。

常见错误:多个工程目录下的web.xml文件的<param-value>atcs.root</param-value>相同,就算在tomcat的conf下配置不同的名,例如配置atcs2.xml指向另外一个工程目录,但是恰巧那个工程下的web.xml里面也配置相同的webAppRootKey,那么将会出现其中一个工程不能够访问的问题。
网页出现经典的The requested resource (/atcs/) is not available错误!

问题发现方法:在myEclipse下配置log4j,之后会将一些不会报出来的错误亦会报出来,根据信息就可以发现是相同的webAppRootKey覆盖问题。在此我的log4j的报错信息:
Web app root system property already set to different value: 'atcs.root' = [D:\workspace2\Huadu_Atcs3\WebContent\] instead of [D:\WorkSpace\Huadu_Atcs3\WebContent\] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

log4j的配置问题参考:http://www.blogjava.net/jianyue/archive/2008/08/21/223500.html

posted @ 2008-08-21 14:48 Qzi 阅读(805) | 评论 (0)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5