??xml version="1.0" encoding="utf-8" standalone="yes"?>久久五月精品,国产精品小仙女,在线电影一区http://www.aygfsteel.com/hyljava/category/51689.htmlzh-cnSat, 23 Nov 2013 23:12:41 GMTSat, 23 Nov 2013 23:12:41 GMT60四v兴唐评辅导q_http://www.aygfsteel.com/hyljava/archive/2013/11/23/406728.html何云?/dc:creator>何云?/author>Sat, 23 Nov 2013 12:52:00 GMThttp://www.aygfsteel.com/hyljava/archive/2013/11/23/406728.htmlhttp://www.aygfsteel.com/hyljava/comments/406728.htmlhttp://www.aygfsteel.com/hyljava/archive/2013/11/23/406728.html#Feedback0http://www.aygfsteel.com/hyljava/comments/commentRss/406728.htmlhttp://www.aygfsteel.com/hyljava/services/trackbacks/406728.html四v兴唐评辅导q_
http://fd.itedu-g.cn/login.php

]]>
Write operations are not allowed in read-only mode 只读模式?FlushMode.NEVER/MANUAL)写操作不?/title><link>http://www.aygfsteel.com/hyljava/archive/2012/09/05/387072.html</link><dc:creator>何云?/dc:creator><author>何云?/author><pubDate>Wed, 05 Sep 2012 03:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/hyljava/archive/2012/09/05/387072.html</guid><wfw:comment>http://www.aygfsteel.com/hyljava/comments/387072.html</wfw:comment><comments>http://www.aygfsteel.com/hyljava/archive/2012/09/05/387072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hyljava/comments/commentRss/387072.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hyljava/services/trackbacks/387072.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="articalTitle" isshow="1"> <h2 id="t_656ffe730100ugtw" class="titName SG_txta"> <h2 id="t_656ffe730100ugtw" class="titName SG_txta"></h2>Write operations are not allowed in read-only mode 只读模式?FlushMode.NEVER/MANUAL)写操作不?/h2><span id="wmqeeuq" class="time SG_txtc"> </span><!-- 正文开?--> </div> <div class="wmqeeuq" id="sina_keyword_ad_area2" class="articalContent "> <div> <p>org.springframework.dao.InvalidDataAccessApiUsag<wbr>eException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.</p> <p><span style="color: #ff0000; font-size: 18px">问题</span>Q?span style="font-family: 宋体; color: #0055ff; font-size: 14px">只读模式?FlushMode.NEVER/MANUAL)写操作不被允许:把你的SessionҎFlushMode.COMMIT/AUTO或者清除事务定义中的readOnly标记?/span></p> <p> <wbr></p> <p>错误原因:<br /> <wbr><span style="color: #5500ff; font-size: 16px"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>  <wbr>OpenSessionInViewFilter在getSession的时?会把获取回来的session的flush mode 设ؓ<span style="color: #0f9932">FlushMode.NEVER</span>。然后把该sessionFactoryl定?span style="color: #0f9932">TransactionSynchronizati<wbr>onManager</span>Qrequest的整个过E都使用同一个sessionQ在hq后再接除该sessionFactory的绑定,最?/span><span style="color: #5500ff; font-size: 16px">closeSessionIfNecessary</span><span style="color: #5500ff; font-size: 16px">Ҏ该session是否已和transactionl定来决定是否关闭session。在q个q程中,若HibernateTemplate 发现自当前session有不是readOnly的transactionQ就会获取到FlushMode.AUTO SessionQҎ拥有写权限?/span><span style="color: #5500ff; font-size: 16px">也即是,如果有不是readOnly的transaction可以由Flush.NEVER转ؓFlush.AUTO,拥有insert,update,delete操作权限Q如果没有transactionQƈ且没有另外h为地设flush model的话Q则doFilter的整个过E都是Flush.NEVER。所以受transaction<span style="color: #00cc22">(</span><u><span style="color: #00cc22">声明式的事务</span></u><span style="color: #00cc22">)</span>保护的方法有写权限,没受保护的则没有?/span><br /><br /><u>解决Ҏ:</u></p> <p><span style="color: #5500ff">web.xml配置里添?/span><br /><span style="color: #0f9932"><filter></span><br /><span style="color: #0f9932"> <wbr> <wbr> <filter-name>OpenSessionInViewFilter</filter-name></span><br /><span style="color: #0f9932"> <wbr> <wbr> <filter-class></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</span><br /><span style="color: #0f9932"> <wbr> <wbr> </filter-class></span><br /><span style="color: #0f9932"> <wbr> <wbr> <init-param></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> <param-name>sessionFactoryBeanName</param-name></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> <param-value>sessionFactory</param-value></span><br /><span style="color: #0f9932"> <wbr> <wbr> </init-param></span><br /><span style="color: #0f9932"> <wbr> <wbr> <init-param></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <param-name>singleSession</param-name></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <param-value>true</param-value> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> </init-param></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <init-param></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <param-name> flushMode </param-name></span><br /><span style="color: #0f9932"> <wbr> <wbr> <param-value>AUTO </param-value> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr></span><br /><span style="color: #0f9932"> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> </init-param></span><br /><span style="color: #0f9932"></filter></span><br /> <wbr> <wbr>// <wbr> <wbr> 。。。?/p> <p><br /><span style="color: #0f9932"><filter-mapping></span><br /><span style="color: #0f9932"> <wbr> <wbr> <filter-name>OpenSessionInViewFilter</filter-name></span><br /><span style="color: #0f9932"> <wbr> <wbr> <url-pattern>/*</url-pattern></span><br /><span style="color: #0f9932"></filter-mapping></span></p> <p> <wbr></p> <p><span style="color: #0f9932">如果在交lspring 理的情况下Q在beans.xml 里的配置</span></p> <p><span style="color: #0f9932"> <wbr><bean id="txManager"<br /> <wbr> <wbr>class="org.springframework.orm.hibernate3.HibernateTransactionMana<wbr>ger"><br /> <wbr> <wbr><property name="sessionFactory" ref="sessionFactory" /><br /> <wbr></bean></span></p> <p><span style="color: #0f9932"> <wbr><aop:config><br /> <wbr> <wbr><aop:pointcut id="bussinessService"<br /> <wbr> <wbr> <wbr>expression="execution(* com.fan.service.base.*.*(..))" /><br /> <wbr> <wbr><aop:advisor pointcut-ref="bussinessService"<br /> <wbr> <wbr> <wbr>advice-ref="txAdvice" /><br /> <wbr></aop:config></span></p> <p><span style="color: #0f9932"> <wbr><tx:advice id="txAdvice" transaction-manager="txManager"><br /> <wbr> <wbr><tx:attributes><br /> <wbr> <wbr> <wbr><tx:method name="get*" read-only="false" propagation="NOT_SUPPORTED"/><br /> <wbr> <wbr> <wbr><tx:method name="find*" read-only="false" propagation="NOT_SUPPORTED"/><br /> <wbr> <wbr> <wbr><tx:method name="save*" propagation="REQUIRED"/> // 如果不把save update delete都配|上Q?br /> <wbr> <wbr> <wbr><tx:method name="update*" propagation="REQUIRED"/> <wbr>//q些操作会无?br /> <wbr> <wbr> <wbr><tx:method name="delete*" propagation="REQUIRED"/><br /> <wbr> <wbr></tx:attributes><br /> <wbr></tx:advice></span></p></div></div><img src ="http://www.aygfsteel.com/hyljava/aggbug/387072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hyljava/" target="_blank">何云?/a> 2012-09-05 11:57 <a href="http://www.aygfsteel.com/hyljava/archive/2012/09/05/387072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate的generator属?http://www.aygfsteel.com/hyljava/archive/2012/06/19/381110.html何云?/dc:creator>何云?/author>Tue, 19 Jun 2012 09:54:00 GMThttp://www.aygfsteel.com/hyljava/archive/2012/06/19/381110.htmlhttp://www.aygfsteel.com/hyljava/comments/381110.htmlhttp://www.aygfsteel.com/hyljava/archive/2012/06/19/381110.html#Feedback0http://www.aygfsteel.com/hyljava/comments/commentRss/381110.htmlhttp://www.aygfsteel.com/hyljava/services/trackbacks/381110.htmlHibernate的generator属?
    本文讲述Hibernate的generator属性的意义。Generator属性有7UclassQ本文简略描qCq?Uclass的意义和用法?
    1. <class name="onlyfun.caterpillar.User"  
    2. table="USER">   
    3. <id name="id" type="string" unsaved-value="null">   
    4. <column name="USER_ID"/>   
    5. <generator class="uuid.hex"/>  
    6. </id>   
    7. </class>   
       

    Hibernate的Generator属性有7UclassQ本文简略描qCq?Uclass的意义和用法?/p>

    1、identityQ用于MySql数据库。特点:递增

     

    1. <id name="id" column="id">  
    2. < generator class="identity"/>  
    3. </id>  

     

    注:对于MySql数据库用递增序列旉要在时对主键指定为auto_increment属性?/p>

    2、sequenceQ用于Oracle数据?

     

    1. <id name="id" column="id">  
    2. <generator class="sequence">  
    3. <param name="sequence">序列?/span></param>  
    4. </generator>  
    5. </id>   

     

    3、nativeQ跨数据库时使用Q由底层方言产生?
    Default.sequence为hibernate_sequence

     

    1. <id name="id" column="id">  
    2. <generator class="native"/>  
    3. </id>   

     

    注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列?
    如果Oracle中没有该序列Q连Oracle数据库时会报错?/p>

    4、hiloQ通过高低位合成idQ先hi_valueQ再建列next_value。必要有初始倹{?/p>

     

    1. <id name="id" column="id">  
    2. <generator class="hilo">  
    3. <param name="table">high_val</param>  
    4. <param name="column">nextval</param>  
    5. <param name="max_lo">5</param>  
    6. </generator>  
    7. </id>    

     

    5、sequencehiloQ同q高低位合成idQ徏一个sequence序列Q不用徏表?

     

    1. <id name="id" column="id">  
    2. <generator class="hilo">  
    3. <param name="sequence">high_val_seq</param>  
    4. <param name="max_lo">5</param>  
    5. </generator>  
    6. </id>   

     

    6、assignedQ用戯定义id;

     

    1. <id name="id" column="id">   
    2. <generator class="assigned"/>  
    3. </id>   

     

    7、foreignQ用于一对一关系׃ndӞ两idg栗?/p>

    本文讲解Hibernate中hbm的generator子元素的一些内|生成器的快捷名字。Generator子元素是一个非常简单的接口Q某些应用程序可以选择提供他们自己特定的实现?/p>

    ?.hbm.xml必须声明?lt; generator>子元素是一个Javacȝ名字Q用来ؓ该持久化cȝ实例生成唯一的标识?/p>

     

    1. <generator class="sequence"/>  

     

    q是一个非常简单的接口Q某些应用程序可以选择提供他们自己特定的实现。当ӞHibernate提供了很多内|的实现。下面是Generator子元素的一些内|生成器的快捷名字:

    incrementQ递增Q?/strong>

    用于为long, short或者intcd生成唯一标识。只有在没有其他q程往同一张表中插入数据时才能使用?在集下不要使用?/p>

    identity

    对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内|标识字D|供支持。返回的标识W是long, short 或者intcd的?/p>

    sequence Q序列)

    在DB2,PostgreSQL, Oracle, SAP DB, McKoi中用序列(sequence)Q而在Interbase中用生成器(generator)。返回的标识W是long, short或?intcd的?/p>

    hilo Q高低位Q?/strong>

    使用一个高/低位法来高效的生成long, short或?intcd的标识符。给定一个表和字D(默认分别是是hibernate_unique_key 和next_hiQ作为高位值得来源。高/低位法生成的标识符只在一个特定的数据库中是唯一的。在使用JTA获得的连接或者用戯行提供的q接中,不要使用q种生成器?/p>

    seqhiloQ用序列的高低位)

    使用一个高/低位法来高效的生成long, short或?intcd的标识符Q给定一个数据库序列Qsequence)的名字?/p>

    uuid.hex

    用一?28-bit的UUID法生成字符串类型的标识W。在一个网l中唯一Q用了IP地址Q。UUID被编码ؓ一?2?6q制数字的字W串?/p>

    uuid.string

    使用同样的UUID法。UUID被编码ؓ一?6个字W长的Q意ASCII字符l成的字W串。不能用在PostgreSQL数据库中

    nativeQ本圎ͼ

    Ҏ底层数据库的能力选择identity, sequence 或者hilo中的一个?/p>

    assignedQ程序设|)

    让应用程序在save()之前为对象分配一个标C符?/p>

    foreignQ外部引用)

    使用另外一个相兌的对象的标识W。和< one-to-one>联合一起用?/p>

    Generator子元素的用法Q?

     

    1. <class name="onlyfun.caterpillar.User" table="USER">  
    2. <id name="id" type="string" unsaved-value="null">  
    3. <column name="USER_ID"/>  
    4. <generator class="uuid.hex"/>  
    5. </id>  
    6. </class>  

     

 


]]>
LOG4J的解?/title><link>http://www.aygfsteel.com/hyljava/archive/2012/05/28/379380.html</link><dc:creator>何云?/dc:creator><author>何云?/author><pubDate>Mon, 28 May 2012 11:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/hyljava/archive/2012/05/28/379380.html</guid><wfw:comment>http://www.aygfsteel.com/hyljava/comments/379380.html</wfw:comment><comments>http://www.aygfsteel.com/hyljava/archive/2012/05/28/379380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hyljava/comments/commentRss/379380.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hyljava/services/trackbacks/379380.html</trackback:ping><description><![CDATA[<p>Ҏ一?解决的办法自然是用相对\径代替绝对\径,其实log4j的FileAppender本n有q样的机Ӟ如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log <br />其中“${WORKDIR}/”是个变量Q会被System Property中的“WORKDIR”的gѝ这P我们可以在log4j加蝲配置文g之前Q先用System.setProperty ("WORKDIR", WORKDIR);讄好根路径Q此操作可通过一初始的servletq行?</p> <p>Ҏ二、可以用服务器环境变量 <br />log4j的配|文件支持服务器的vm的环境变量,格式cM${catalina.home} <br />log4j.appender.R=org.apache.log4j.RollingFileAppender <br />log4j.appender.R.File=${catalina.home}/logs/logs_tomcat.log <br />log4j.appender.R.MaxFileSize=10KB <br />其中?{catalina.home}qwindowspȝ的环境变量,q个环境变量׃需要在Windowspȝ的环境变量中讄。之所以这P你可以看看tomcat\bin\catalina.bat(startup,shutdown都是调用q个)里面自带?Dcatalina.home= "%CATALINA_HOME%" 。承这个思想Q所以你也可以自p定一个参?Dmylog.home="D:/abc/log"到对应的服务器java启动的vm参数?</p> <p>Ҏ三、通过servlet初始化init()Ҏ中加载file属性实现相对\?<br />具体实现:做一个servlet,在系l加载的时?把properties的文件读C个properties文g?那个file的属性?我用的是相对目?Ҏ(前面加上pȝ的根目录),让后把这个properties对象讄到propertyConfig中去,q样初始化了log的设|?在后面的使用中就用不着再配|了 <br />一般在我们开发项目过E中,log4j日志输出路径固定到某个文件夹,q样如果我换一个环?日志路径又需要重C?比较不方?目前我采用了动态改变日志\径方法来实现相对路径保存日志文g <br />(1).在项目启动时,装入初始化类: <br />public class Log4jInit extends HttpServlet { <br />         static Logger logger = Logger.getLogger(Log4jInit.class); <br />         public Log4jInit() { <br />         } </p> <p>         public void init(ServletConfig config) throws ServletException { <br />             String prefix = config.getServletContext().getRealPath("/"); <br />             String file = config.getInitParameter("log4j"); <br />             String filePath = prefix + file; <br />             Properties props = new Properties(); <br />             try { <br />                 FileInputStream istream = new FileInputStream(filePath); <br />                 props.load(istream); <br />                 istream.close(); <br />                 //toPrint(props.getProperty("log4j.appender.file.File")); <br />                 String logFile = prefix + props.getProperty("log4j.appender.file.File");//讄路径 <br />                 props.setProperty("log4j.appender.file.File",logFile); <br />                 PropertyConfigurator.configure(props);//装入log4j配置信息 <br />             } catch (IOException e) { <br />                 toPrint("Could not read configuration file [" + filePath + "]."); <br />                 toPrint("Ignoring configuration file [" + filePath + "]."); <br />                 return; <br />             } <br />         } </p> <p>         public static void toPrint(String content) { <br />             System.out.println(content); <br />         } <br />} <br />实际上log4j的配|文件log4j.properties如ؓ默认名,可放|在JVM能读到的classpath里的L地方Q一般是攑֜WEB- INF/classes目录下。当log4j的配|文件不再是默认名,则需要另外加载ƈl出参数Q如?“ropertyConfigurator.configure(props);//装入log4j配置信息” </p> <p>(2).Web.xml中的配置 <br /><servlet> <br />         <servlet-name>log4j-init</servlet-name> <br />         <servlet-class>Log4jInit</servlet-class> <br />         <init-param> <br />           <param-name>log4j</param-name> <br />           <param-value>WEB-INF/classes/log4j.properties</param-value> <br />         </init-param> <br />         <load-on-startup>1</load-on-startup> <br />       </servlet> </p> <p>注意Q上面的load-on-startup设ؓ0Q以便在Web容器启动时即装入该Servlet。log4j.properties文g攑֜根的properties子目录中Q也可以把它攑֜其它目录中。应该把.properties文g集中存放Q这h便管理?<br />(3).log4j.properties中即可配|log4j.appender.file.File为当前应用的相对路径. </p> <p><br />以上是网上log4j日志文g的相对\径配|的三种ҎQ我能找到的׃U)Q分析: </p> <p>Ҏ一主要是扩展了log4j的RollingFileAppenderc,其他的FileAppender同样道理。扩展的ҎQ就是用一个子cd覆盖setFileҎQ这个方法在log4jd配置文g生成appender的时候调用,传入的就是配 <br />|文件中的\径,q样我就可以按照自己的想法在路径前面加上根\径了。这U方法可以在log4j.properties中用相对路径自由配置log4j.appender.A1.File属性来军_生成的日志相对web应用?<br />目录的位|?</p> <p>Ҏ二是利用服务器vm中已l存在的环境变量?{catalina.home}来设|相对于${catalina.home}的日志\径,日志只能攑ֈ服务器子目录里,而且如果是用的其它服务器Q则要改对应的环境变量。此Ҏq_UL不方ѝ?</p> <p>Ҏ三是扩展ActionServletc,覆盖其init()ҎQ新Ҏ中蝲入log4j.properties位置的参敎ͼ可以自由配置log4j的配|文件的名字和存放位|。也可自由配|log4j日志文g的相对于当前应用的\径。详 <br />l代码如下: </p> <p>E序代码 <br />package wbb.bysxxglxt.util; </p> <p>import org.apache.struts.action.*; <br />import org.apache.commons.logging.LogFactory; <br />import org.apache.commons.logging.Log; <br />import javax.servlet.ServletException; <br />import java.util.Properties; <br />import java.io.InputStream; <br />import org.apache.log4j.PropertyConfigurator; <br />import java.io.FileInputStream; <br />import java.io.IOException; </p> <p>public class ExtendedActionServlet extends ActionServlet { <br />        private Log log = LogFactory.getLog(this.getClass().getName()); </p> <p>        public ExtendedActionServlet() {} </p> <p>        public void init() throws ServletException { <br />            log.info( <br />                    "Initializing, My MyActionServlet init this System's Const Variable"); <br />            String prefix = this.getServletConfig().getServletContext().getRealPath( <br />                    "/"); <br />            String file = this.getServletConfig().getInitParameter("log4j"); <br />            String filePath = prefix + file; <br />            Properties props = new Properties(); <br />            System.out.println(prefix); <br />            System.out.println(file); <br />            System.out.println(filePath); </p> <p>            try { <br />                FileInputStream log4jStream = new FileInputStream(filePath); <br />                props.load(log4jStream); <br />                log4jStream.close(); <br />                String logFile = prefix + <br />                                 props.getProperty("log4j.appender.A1.File"); //讄路径 </p> <p>                System.out.println(logFile); <br />                props.setProperty("log4j.appender.A1.File", logFile); <br />                PropertyConfigurator.configure(props); //装入log4j配置信息 <br />            } catch (IOException e) { <br />                e.printStackTrace(); <br />            } <br />            log.info("Initializing, end My Init"); <br />            super.init();//应用了struts,此方法不能省QActionServlet覆盖了的此方法中有很多重要操?<br />        } <br />} </p> <p><br />**********************应用web.xml 关键部分*************************** </p> <p>      <br />E序代码 <br /><servlet> <br />        <servlet-name>action</servlet-name> <br />        <servlet-class>wbb.bysxxglxt.util.ExtendedActionServlet</servlet-class> <br />        <init-param> <br />          <param-name>config</param-name> <br />          <param-value>/WEB-INF/struts-config.xml</param-value> <br />        </init-param> <br />        <init-param> <br />            <param-name>log4j</param-name> <br />            <param-value>properties\log4j.properties</param-value>                    <br />          </init-param> <br />        <init-param> <br />          <param-name>debug</param-name> <br />          <param-value>0</param-value> <br />        </init-param> <br />        <init-param> <br />          <param-name>application</param-name> <br />          <param-value>ApplicationResources</param-value> <br />        </init-param> <br />        <load-on-startup>0</load-on-startup> <br />      </servlet> <br />      <servlet-mapping> <br />        <servlet-name>action</servlet-name> <br />        <url-pattern>*.do</url-pattern> <br />      </servlet-mapping> </p> <p><br />注意log4j参数中相对\径的斜杠U的写法Q而且log4j属性文件如攄在web-inf/classes目录或web-inf{目录中最好改名,因ؓ在加载此Servlet之前Q服务器如tomcat启动时会自动搜烦web-inf目录和web-inf/classes目录中log4j.properties文gQ如有则自动加蝲。log4j属性文件加载后,׃该属性文件中log4j.appender.A1.File的值用的是相对路径Q自动加载配|便会出错: <br />log4j:ERROR setFile(null,true) call failed. <br />java.io.FileNotFoundException: WEB-INF\logs\bysxxglxt.log (pȝ找不到指定的路径? <br />不知道log4jZ么会q么早自动启动。尽后面加载扩展的ActionServlet中正设|了log4j属性文件ƈ正常加蝲了,但报的这个错q是怪不爽的Q于是只有更改log4j属性文件名字或者更改其存放位置Q让其不能自动加载了Q不q还是有两个警告Q?<br />log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax). <br />log4j:WARN Please initialize the log4j system properly. <br />q样做就是掩耳盗铃了Q如果你有更好的解决办法Q希望能在此贴出来,大家一LI?</p> <p>********************log4j.properties***************************** <br />### 讄loggerU别 ### </p> <p>E序代码 <br />log4j.rootLogger=DEBUG,stdout,A1 </p> <p>### appender.stdout输出到控制台 ### <br />log4j.appender.stdout=org.apache.log4j.ConsoleAppender <br />log4j.appender.stdout.Target=System.out <br />log4j.appender.stdout.layout=org.apache.log4j.PatternLayout <br />log4j.appender.stdout.layout.ConversionPattern= [%5p] [BYSXXGLXT] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%-5p] [%t] ( %F,%L ) - %m%n </p> <p>### appender.A1输出到日志文?### <br />log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender <br />log4j.appender.A1.File=WEB-INF\\logs\\bysxxglxt.log <br />##注意上面日志文g相对应用根目录\径的写法 <br />log4j.appender.A1.DatePattern='.'yyyy-MM-dd'.log' <br />log4j.appender.A1.Append=true <br />## 输出DEBUGU别以上的日?<br />log4j.appender.A1.Threshold=DEBUG <br />log4j.appender.A1.layout=org.apache.log4j.PatternLayout <br />log4j.appender.A1.layout.ConversionPattern= [%5p] [BYSXXGLXT] %d{yyyy-MM-dd HH:mm:ss}: %-4r     [%t] ( %F,%L ) - %m%n <br /></p><img src ="http://www.aygfsteel.com/hyljava/aggbug/379380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hyljava/" target="_blank">何云?/a> 2012-05-28 19:06 <a href="http://www.aygfsteel.com/hyljava/archive/2012/05/28/379380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j的简单配|?/title><link>http://www.aygfsteel.com/hyljava/archive/2012/05/28/379378.html</link><dc:creator>何云?/dc:creator><author>何云?/author><pubDate>Mon, 28 May 2012 11:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/hyljava/archive/2012/05/28/379378.html</guid><wfw:comment>http://www.aygfsteel.com/hyljava/comments/379378.html</wfw:comment><comments>http://www.aygfsteel.com/hyljava/archive/2012/05/28/379378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hyljava/comments/commentRss/379378.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hyljava/services/trackbacks/379378.html</trackback:ping><description><![CDATA[<p> 首先导入两个?  commons-logging.jar  log4j-1.2.12.jar</p> <p>   在src下编??properties文g</p> <p>1.log4j.properties 下面是内?/p> <p><br />##LOGGERS</p> <p>#define a logger<br />log4j.rootLogger=INFO,console,file</p> <p>##APPENDERS<br />#define an appender named console<br />log4j.appender.console=org.apache.log4j.ConsoleAppender<br />#define an appender named file<br />log4j.appender.file=org.apache.log4j.RollingFileAppender<br />log4j.appender.file.File=d:/demo_log.txt<br />#set the log's size<br />log4j.appender.file.MaxFileSize=1000KB<br />log4j.appender.file.MaxBackupIndex=20</p> <p>##LAYOUTS<br />#assign a SimpleLayout to console appender<br />log4j.appender.console.layout=org.apache.log4j.SimpleLayout<br />#assign a PatternLayout to file appender<br />log4j.appender.file.layout=org.apache.log4j.PatternLayout<br />log4j.appender.file.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}]%m%n</p> <p> </p> <p>2.<br />    simplelog.properties下面是内?/p> <p><br />log.apache.commons.logging.simplelog.defaultlog=info</p> <p>3.<br />    commons-logging.properties下面是内?/p> <p>##set Log as Log4J<br />org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger</p> <p> </p> <p> </p><img src ="http://www.aygfsteel.com/hyljava/aggbug/379378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hyljava/" target="_blank">何云?/a> 2012-05-28 19:04 <a href="http://www.aygfsteel.com/hyljava/archive/2012/05/28/379378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j的作? http://www.aygfsteel.com/hyljava/archive/2012/05/25/379099.html何云?/dc:creator>何云?/author>Fri, 25 May 2012 01:32:00 GMThttp://www.aygfsteel.com/hyljava/archive/2012/05/25/379099.htmlhttp://www.aygfsteel.com/hyljava/comments/379099.htmlhttp://www.aygfsteel.com/hyljava/archive/2012/05/25/379099.html#Feedback0http://www.aygfsteel.com/hyljava/comments/commentRss/379099.htmlhttp://www.aygfsteel.com/hyljava/services/trackbacks/379099.html

log4j的作?/font>  

 

一、什么是log4j
Log4j 是Apache的一个开放源代码目Q通过使用Log4jQ我们可以控制日志信息输送的目的地是控制台、文件、GUIlg、甚x套接口服务器、NT的事件记录器、UNIX Syslog守护q程{;我们也可以控制每一条日志的输出格式Q通过定义每一条日志信息的U别Q我们能够更加细致地控制日志的生成过E。最令h感兴的是Q这些可以通过一个配|文件来灉|地进行配|,而不需要修改应用的代码?

二、日志简?br />日志指在E序中插入语句以提供调试信息。用日志能够监视程序的执行。例如,用户利用日志可以获得关于应用E序故障的完整信息。用户可以将调试语句Q如 System.out.printlnQ插入到E序中以获得详细的调试信息?

三、项目中Z么要用log4j
大家在编E时l常不可避免地要使用C些日志操作,比如开发阶D늚调试信息、运行时的日志记录及审计。调查显C,日志代码占代码总量?Q。通常大家可以单地使用System.out.println()语句输出日志信息Q但是往往会有一些判断,比如Q?
 
if (someCondition)
{
  System.out.println("some information.");
}

q些判断造成正常的程序逻辑中؜杂了大量的输句。而在开发阶D写下的q些判断仅ؓ了调试的语句Q在开发完成时需要查扑ƈU除。部|运行后Q尤其是在一些企业应用系l中Q还l常需要进一步调试,q时遇C更大的麻烦。所以,我们需要一套完备的、灵zȝ、可配置的日志工具log4J是优秀的选择?

四、log4jlg
Log4j ?logger、appender ?layout 三个lgl成。可以通过同名?Java c访?Log4j 的这三个lg?/font>

Logger - 在执行应用程序时Q接收日志语句生成的日志h。它是一U重要的日志处理lgQ?可以通过 log4j API ?logger cd其进行访问。它的方法有Qdebug、info、warn、error、fatal ?log。这些方法用于记录消息?
Appender - 理日志语句的输出结果。执行日志语句时QLogger 对象接收来自日志语句的记录h。此h是通过 logger 发送至 appender 的。然后,Appender 输出结果写入到用户选择的目的地。对于不同的日志目的圎ͼ提供不同?appender cd。这?appender 包括Q用于文件的 file appender、用于数据库?JDBC appender 和用?SMTP 服务器的 SMTP appender?
Layout - 用于指定 appender 日志语句写入日志目的地所采用的格式。appender 可以用来格式化输出结果的各种布局包括Q简单布局、模式布局?HTML 布局?/font>



]]>
Hibernate中用逆{工程实现多对多关pL?/title><link>http://www.aygfsteel.com/hyljava/archive/2012/05/13/378049.html</link><dc:creator>何云?/dc:creator><author>何云?/author><pubDate>Sun, 13 May 2012 10:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/hyljava/archive/2012/05/13/378049.html</guid><wfw:comment>http://www.aygfsteel.com/hyljava/comments/378049.html</wfw:comment><comments>http://www.aygfsteel.com/hyljava/archive/2012/05/13/378049.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hyljava/comments/commentRss/378049.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hyljava/services/trackbacks/378049.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.aygfsteel.com/images/blogjava_net/hyljava/选课数据?jpg" width="356" height="479" /><br />history中的c_id与s_id分别是外键?br />在hibernate中用myeclicpse逆{工程实现的多对多<br /><img border="0" alt="" src="http://www.aygfsteel.com/images/blogjava_net/hyljava/360截图20120513175655823.jpg" width="349" height="482" /><br /><br />?nbsp;CourseDAO 中的saveҎ ҎQ?br /> public void save(Course transientInstance) {<br />  log.debug("saving Course instance");<br />  Session session=null;<br />  Transaction tx=null;<br />  try {<br />   session=getSession();<br />   tx=session.beginTransaction();<br />   <br />   <br />   session.save(transientInstance);<br />   tx.commit();<br />   log.debug("save successful");<br />  } catch (RuntimeException re) {<br />   log.error("save failed", re);<br />   if(tx!=null){<br />    tx.rollback();<br />   }<br />   throw re;<br />  }<br /> }<br />?nbsp;Student DAO 中的saveҎ ҎQ?br /><br />public void save(Student transientInstance) {<br />  log.debug("saving Student instance");<br />  Session session=null;<br />  Transaction tx=null;<br />  try {<br />   session=getSession();<br />   tx=session.beginTransaction();<br />   <br />   session.save(transientInstance);<br />   log.debug("save successful");<br />  } catch (RuntimeException re) {<br />   log.error("save failed", re);<br />   if(tx!=null){<br />    tx.rollback();<br />   }<br />   throw re;<br />  }<br /> }<br />?nbsp;HistoryDAO 中的saveҎ ҎQ?br /><br />public void save(History transientInstance) {<br />  log.debug("saving History instance");<br />  Session session=null;<br />  Transaction tx=null;<br />  try {<br />   session=getSession();<br />   tx=session.beginTransaction();<br />   session.save(transientInstance);<br />   tx.commit();<br />   log.debug("save successful");<br />  } catch (RuntimeException re) {<br />   log.error("save failed", re);<br />   if(tx!=null){<br />    tx.rollback();<br />   }<br />   throw re;<br />  }<br /> }<br />试cd下:<br /> <p>public class Test {</p> <p>public static void main(String[] args) {<br />    Course course=new Course();<br />    CourseDAO cdao=new CourseDAO();<br />  <br />  Student stu=new Student();<br />  StudentDAO sdao=new StudentDAO();<br />    <br />  History his=new History();<br />  HistoryId hid=new HistoryId();<br />  HistoryDAO hdao=new HistoryDAO();<br />  <br />  <br />    course.setCName("c++");<br />    course.setCTer("张三");<br />  <br />  stu.setSName("张同?);<br />  stu.setSAge(22);<br />  <br />  hid.setCourse(course);<br />  hid.setStudent(stu);<br />   <br />   his.setId(hid);<br />      cdao.save(course);<br />   sdao.save(stu);<br />   hdao.save(his);<br />  }</p> <p>}<br /></p><br /> <img src ="http://www.aygfsteel.com/hyljava/aggbug/378049.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hyljava/" target="_blank">何云?/a> 2012-05-13 18:04 <a href="http://www.aygfsteel.com/hyljava/archive/2012/05/13/378049.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¤</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯȪ</a>| <a href="http://" target="_blank">ᶫ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">Ӣɳ</a>| <a href="http://" target="_blank">Ű</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">Ϻӿ</a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">찲</a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">Ī</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ĺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">ͳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ρɽ</a>| <a href="http://" target="_blank">â</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͭϿ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>