??xml version="1.0" encoding="utf-8" standalone="yes"?> 1.框架的Iframe 自动适应高度的问? 2.Iframe框架包含的页面提交到服务器的session 丢失的问? 解决办法. 1. 在iframe包含的页?加上 <script language="javascript">document.domain=www.域名.com;</script> 2.在iframe 保航的页面服务器(resin)写一个filter 讄一下返回的((HttpServletResponse)response).setHeader("P3P","CP=CAO PSA OUR"); q样可以解决以上两个问题了.. Z么不用System.out.println()? Z么同时用commons-logging和Log4j?Z么不仅用其中之一Q?br />
Commons-loggin的目的是?#8220;所有的Java日志实现”提供一个统一的接口,它自w的日志功能q_弱(只有一个简单的SimpleLog?Q,所以一般不会单独用它?/p>
Log4j的功能非常全面强大,是目前的首选。我发现几乎所有的Java开源项目都会用到Log4jQ但我同时发玎ͼ所有用到Log4j的项目一般也同时会用到commons-loggin。我惻I大家都不希望自己的项目与Log4jl定的太紧密吧。另外一个我能想到的“同时使用commons-logging和Log4j”的原因是Q简化用和配置?/p>
一点,“同时使用commons-logging和Log4j”Q与“单独使用Log4j”相比Qƈ不会带来更大的学习、配|和l护成本Q反而更加简化了我们的工作。我惌也是Z?#8220;所有用到Log4j的项目一般也同时会用到commons-loggin”的原因之一吧?/p>
l 很脓心的帮我们自动选择适当的日志实现系l(q一炚w常好Q) l 它甚至不需要配|?/p>
1) 首先在classpath下寻找自q配置文gcommons-logging.propertiesQ如果找刎ͼ则用其中定义的Log实现c; 2) 如果找不到commons-logging.properties文gQ则在查找是否已定义pȝ环境变量org.apache.commons.logging.LogQ找到则使用其定义的Log实现c; 3) 否则Q查看classpath中是否有Log4j的包Q如果发玎ͼ则自动用Log4j作ؓ日志实现c; 4) 否则Q用JDK自n的日志实现类QJDK1.4以后才有日志实现c)Q?/p>
5) 否则Q用commons-logging自己提供的一个简单的日志实现cSimpleLogQ?/p>
Q以上顺序不保证完全准确Q请参考官Ҏ档) 可以看到Qcommons-logging对编E者和Log4j都非常友好?/p>
Z化配|commons-loggingQ一般不使用commons-logging的配|文Ӟ也不讄与commons-logging相关的系l环境变量,而只需Log4j的Jar包放|到classpash中就可以了。这样就很简单地完成了commons-logging与Log4j的融合。如果不想用Log4j了怎么办?只需classpath中的Log4j的Jar包删除即可?/p>
p么简单! 代码应该怎么写? 1、导入所有需的commongs-loggingc: import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 如果愿意化的话,q可以两行合Z行: import org.apache.commons.logging.*; private static Log log = LogFactory.getLog(YouClassName.class); 注意q里定义的是static成员Q以避免产生多个实例?/p>
LogFactory.getLog()Ҏ的参C用的是当前类的classQ这是目前被普通认为的最好的方式。ؓ什么不写作LogFactory.getLog(this.getClass())Q因为staticcL员访问不到this指针Q?/p>
log.debug("111"); log.info("222"); log.warn("333"); log.error("444"); log.fatal("555"); q里的logQ就是上面第二步中定义的cL员变量,其类型是org.apache.commons.logging.LogQ通过该类的成员方法,我们可以将不同性质的日志信息输出到目的圎ͼ目的地是哪里Q视配置可定Q可能是stdoutQ也可能是文Ӟq可能是发送到邮gQ甚臛_送短信到手机……详见下文对log4j.properties的介l)Q?/p>
l debug() 输出“调试”U别的日志信息; l info() 输出“信息”U别的日志信息; l warn() 输出“警告”U别的日志信息; l error() 输出“错误”U别的日志信息; l fatal() 输出“致命错误”U别的日志信息; Ҏ不同的性质Q日志信息通常被分成不同的U别Q从低到高依ơ是Q?#8220;调试QDEBUGQ?#8221;“信息QINFOQ?#8221;“警告QWARNQ?#8221;“错误QERRORQ?#8221;“致命错误QFATALQ?#8221;。ؓ什么要把日志信息分成不同的U别呢?q实际上是方便我们更好的控制它。比如,通过Log4j的配|文Ӟ我们可以讄“输出‘调试’及以上别的日志信息”Q即“调试”“信息”“警告”“错误”“致命错误”Q,q对目开发h员可能是有用的;我们q可以设|?#8220;输出“警告”及以上别的日志信息”Q即“警告”“错误”“致命错误”Q,q对目最l用户可能是有用的?/p>
仅从字面上理解,也可以大致得出结论:最常用的应该是debug()和info()Q而warn()、error()、fatal()仅在相应事g发生后才使用?/p>
上面所介绍的方法是目前被普通应用的Q可以说是被标准化了的方法,几乎所有的人都是这么用。如果不信,或想认一下,去下蝲几个知名的Java开源项目源代码看一下吧?/p>
import org.apache.commons.logging.LogFactory; { private static Log log = LogFactory.getLog(TestLog.class); { log.debug("111"); log.info("222"); log.warn("333"); log.error("444"); log.fatal("555"); } { TestLog testLog = new TestLog(); testLog.test(); } } 可是Q怎么才能让Log4j发挥它的作用呢?{案很简单,只需满“classpath中有Log4j的jar?#8221;。前面已l说q了Qcommons-logging会自动发现ƈ应用Log4j。所以只要它存在Q它发挥作用。(它不存在呢?自然׃发挥作用Qcommons-logging会另行选择其它的日志实现类。) import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class TestLog4j { static Logger logger = Logger.getLogger(TestLog4j.class); //First step public static void main(String args[]) { PropertyConfigurator.configure("log4j.properties"); //Second step logger.debug("Here is some DEBUG"); //Third step logger.info("Here is some INFO"); logger.warn("Here is some WARN"); logger.error("Here is some ERROR"); logger.fatal("Here is some FATAL"); } } 不过也就多出一行。但q至说明,引用commons-loggingq没有问题复杂化,反而简单了一些。在q里1+1小?了。这也验证了前面的结论?/p>
ȝ commons-logging提供了简捗统一的接口,不需要额外配|,单; Log4j功能非常全面、强大; commons-logging仅仅对Log4j(当然q包括其它LOG实现)作了一层包装,具体的日志输是在内部转交ln后的Log4j来处理;而Log4j虽然做了所有的事情Q却甘作l叶Q从不以真nCZh?/p>
两者堪U绝配?/p>
除去?开头的注释以及IQ第一行有用的内容是: log4j.rootLogger = DEBUG, CONSOLE,A1 log4j.rootLogger是最最重要的一个属性了Q它定义日志信息?#8220;输出U别”?#8220;输出目的?#8221;?/p>
关键?#8220;=”后面的|“DEBUG, CONSOLE,A1”q里我们要把它分成两部分Q第一个逗号之前的是W一部分Q指?#8220;输出U别”Q后面的是第二部分,指定“输出目的?#8221;。可以同时指定多?#8220;输出目的?#8221;Q以逗号隔开?/p>
具体C面这一行:它指定的“输出U别”?#8220;DEBUG”Q它指定?#8220;输出目的?#8221;?#8220;CONSOLE”?#8220;A1”?/p>
注意Q?/p>
l “输出U别”有可选的五个|分别是DEBUG、INFO、WARN、ERROR、FATALQ它们是由Log4jpȝ定义的?/p>
l “输出目的?#8221;是我们自己定义的了Q就在log4j.properties的后面部分,此文件定义的“输出目的?#8221;有CONSOLE、FILE、ROLLING_FILE、SOCKET、LF5_APPENDER、MAIL、DATABASE、A1、im。该文g之所以可作主模板Q就是因为它比较全面地定义了各种常见的输出目的地Q控制台、文件、电子邮件、数据库{)?/p>
好,下面详细解释“log4j.rootLogger=DEBUG, CONSOLE,A1”q一行: l 指定“输出U别”?#8220;DEBUG”Q即Q仅输出U别大于{于“调试QDEBUGQ?#8221;的日志信息。如果此处指定的?#8220;WARN”则仅调用warn()、error()、fatal()Ҏ输出的日志信息才被输出到“输出目的?#8221;Q而调用debug()、info()Ҏ输出的日志信息不被输出到“输出目的?#8221;。明白了吗?Log4j是以这U方式来qo控制日志信息的输Z否,q也是对日志信息q行U别分类的目的?/p>
l 指定“输出目的?#8221;?#8220;CONSOLE”?#8220;A1”Q即Q将指定的日志信息(Ҏ日志U别已进行了qoQ同时输出到?#8220;控制?#8221;?#8220;SampleMessages.log4j文g”?/p>
# 应用于控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=DEBUG log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=SampleMessages.log4j log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout 注意Q这里的定义没有指定输出文g的\径,它的路径实际上是 java.user.path的倹{?br />
log4j.rootLogger = ERROR, CONSOLE,FILE,MAIL ?#8220;错误QERRORQ?#8221;?#8220;致命错误QFATALQ?#8221;U别的日志信息同时输出到控制台、文Ӟq且发电子邮件向pȝ理员报告。是不是很爽Q(如果?#8220;调试QDEBUGQ?#8221;U别的日志信息邮件给理员,恐怕迟早会把他/她的邮箱涨爆Q哪怕用的是GmailQ再ơ理解了“日志信息分Z同?#8221;的意图了吧?Q?/p>
##Log4J配置文g实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签{全套功能。择其一二用就够用了?/p>
##此文Ӟlog4j.propertiesQ内Ҏ自网l,非本文作者liigo原创?/p>
log4j.addivity.org.apache=true log4j.appender.Threshold=DEBUG log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n log4j.appender.FILE.File=file.log log4j.appender.FILE.Append=false log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n # Use this layout for LogFactor 5 analysis log4j.appender.ROLLING_FILE.Threshold=ERROR log4j.appender.ROLLING_FILE.File=rolling.log log4j.appender.ROLLING_FILE.Append=true log4j.appender.ROLLING_FILE.MaxFileSize=10KB log4j.appender.ROLLING_FILE.MaxBackupIndex=1 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender log4j.appender.SOCKET.RemoteHost=localhost log4j.appender.SOCKET.Port=5001 log4j.appender.SOCKET.LocationInfo=true # Set up for Log Facter 5 log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000 log4j.appender.MAIL.Threshold=FATAL log4j.appender.MAIL.BufferSize=10 log4j.appender.MAIL.From=web@www.wuset.com log4j.appender.MAIL.SMTPHost=www.wusetu.com log4j.appender.MAIL.Subject=Log4J Message log4j.appender.MAIL.To=web@www.wusetu.com log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver log4j.appender.DATABASE.user=root log4j.appender.DATABASE.password= log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n') log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n log4j.appender.A1.File=SampleMessages.log4j log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j' log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout log4j.appender.im.username = username log4j.appender.im.password = password log4j.appender.im.recipient = corlin@cybercorlin.net log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n [INFO] Scanning for projects... GroupId: org.apache.maven.archetypes Reason: Unable to determine the release version Try downloading the file manually from the project website. Then, install it using the command: org.apache.maven.archetypes:maven-archetype-quickstart:jar:RELEASE [INFO]
]]>
]]>
]]>
]]>
]]>
]]>
cpu 双核2.66GHz * 2
内存 8G
操作pȝ Win2003
修改Tomcat\bin\catalina.bat文g?br />
扑ֈset JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"q句话。在前面加上rem注释掉?br />
在它下面加入Q?br />
set JAVA_OPTS=-server -Xms1024m -Xmx1024m -Xss512k -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true
重新启动TomcatQ正常启动了
]]>
q个……׃必说了吧?/p>
功能太弱Q不易于控制。如果暂时不惌Z怎么办?如果惌出到文g怎么办?如果想部分输出怎么办?……
Commons-logging能帮我们做什么?
l 提供一个统一的日志接口,单了操作Q同旉免项目与某个日志实现pȝ紧密a耦合
q里看一下它怎么“‘很脓心的’帮我?#8216;自动选择’‘适当?#8217;日志实现pȝ”Q?/p>
可见Qcommons-loggingL能找C个日志实现类Qƈ且尽可能扑ֈ一?#8220;最合?#8221;的日志实现类。我说它“很脓?#8221;实际上是因ؓQ?、可以不需要配|文Ӟ2、自动判断有没有Log4j包,有则自动使用之;3、最悲观的情况下也总能保证提供一个日志实玎ͼSimpleLogQ?/p>
我们在需要输出日志信息的“每一?#8221;cM做如下的三个工作Q?/p>
2、在自己的类中定义一个org.apache.commons.logging.LogcȝU有静态类成员Q?/p>
3、用org.apache.commons.logging.Logcȝ成员Ҏ输出日志信息Q?/p>
从上面三个步骤可以看出,使用commons-logging的日志接口非常的单,不需要记忆太多东西:仅仅用到了两个类Log, LogFactoryQƈ且两个类的方法都非常(后者只用到一个方法,前者经常用到的也只是上面第三步中列出的几个Q,同时参数又非常简单?/p>
下面l出一个完整的Javacȝ代码Q?/p>
package liigo.testlog;
import org.apache.commons.logging.Log;
public class TestLog
public void test()
public static void main(String[] args)
只要保证commons-logging的jar包在classpath中,上述代码肯定可以很顺利的~译通过。那它的执行l果是怎么L呢?恐怕会有很大的不同Q请l箋往下看?/p>
Log4j在哪里呢Q它发挥作用了吗Q?br />
应该注意刎ͼ我们上面l出的源代码Q完全没有涉及到Log4j——这正是我们所希望的,q也正是commons-logging所要达到的目标之一?/p>
注意Q配|文件log4j.properties对Log4j来说是必ȝ。如果classpath中没有该配置文gQ或者配|不对,会引发q行时异常?/p>
q样Q要正确地应用Log4j输出日志信息Qlog4j.properties的作用就很重要了。好在该文g有通用的模板,复制一份(E加修改Q就可以使用。几乎每一个Java目目录内都会有一个log4j.properties文gQ可下蝲几个Java开源项目源代码查看。本文最后也附一个模板性质的log4j.properties文gQ直接复制过d可以用,或者根据自q需要稍加修攏V后文将会log4j.properties文g适当作一些介l?/p>
q里Z提示一点:如果不用commons-loggingQ仅仅单独用Log4jQ操作上反而要E微ȝ一些,因ؓLog4j需要多一点点的初始化代码Q相比commons-logging而言Q:
commons-logging和Log4j的jar包都攄到classpath下,同时也将Log4j的配|文件放到classpath中,两者就可以很好的合作?/p>
采用Log4j配合commons-logging作ؓ日志pȝQ是目前Java领域非常非常行的模式,使用非常非常的普遍。两者的l合带来的结果就是:?+ 强大?/p>
对log4j.properties的一点介l?br />
下面对log4j.properties文g内容作一点点介绍Q以后文所附log4j.properties文gZQ?/p>
Z么说“CONSOLE”表示日志信息输出到“控制?#8221;呢?那就要看一下后文的定义了:
Z么说“A1”表示日志信息输出到“SampleMessages.log4j文g”呢?q要看后文的定义Q?/p>
您应该已l注意到Q在定义“输出目的?#8221;Ӟq可以指定日志格式、时间、布局{相关信息。略q?/p>
好了Q我可以Ҏ需要,这一行修改ؓQ?/p>
附:一个有用的log4j.properties文g模板
##Log4J的配|之单它遍及于来多的应用中?/p>
log4j.rootLogger=DEBUG, CONSOLE,A1
# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
#应用于文?
log4j.appender.FILE=org.apache.log4j.FileAppender
# 应用于文件回?
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
#应用于socket
# Log Factor 5 Appender
# 发送日志给邮g
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
# 用于数据?
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
#自定义Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.layout=org.apache.log4j.PatternLayout
# l束
]]>今天见一C个很郁闷的事情,当用mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app来创Z个新目Ӟ有时候会出现以下错误Q解册E如下:
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO]
----------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:create] (aggregator-style)
[INFO]
----------------------------------------------------------------------------
。。。。。。?br />
[INFO] Velocimacro : initialization complete.
[INFO] Velocity successfully started.
[INFO] [archetype:create]
[INFO] Defaulting package to group ID: com.mycompany.app
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO]
------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
ArtifactId: maven-archetype-quickstart
Version: RELEASE
mvn install:install-file -DgroupId=org.apache.maven.archetypes
-DartifactId=maven-arch
etype-quickstart \
-Dversion=RELEASE -Dpackaging=jar -Dfile=/path/to/file
------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Tue Apr 17 07:08:50 MDT 2007
[INFO] Final Memory: 4M/8M
[INFO]
------------------------------------------------------------------------
1.打开|址Q?a >http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/
2.选择最新版本ƈ且下载最新的“maven-archetype-quickstart-1.0-alpha-4.jar ”文g
3.安装q个archetype到maven本地仓库。用命令如下:mvn install:install-file -DgroupId=org.apache.maven.archtypes -Dar
tifactId=maven-archetype-quickstart -Dversion=1.0-alpha-4 -Dpackaging=jar -Dfile=c:\7000\maven\maven-archetype-quickstart-1.0-alpha-4.jar。注?Dfile是刚下蝲的文件的路径?br />
现在在cmd中执行mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app可以创建新目了?/span>
]]>
1、下载jdk(q个不需要多说了Q能看到q篇文章的h都会?/span>)
下蝲后,解压Q假设ؓd:\JAVATOOLS\JDK6Q要保bin目录在这个目录里Q下面的JAVA_HOME即ؓ此目录d:\JAVATOOLS\JDK6.
2、配|系l变?br />
(1) 右键单击“我的电脑”Q选择“属?#8221;Q?#8220;高”Q点?#8220;环境变量”?br />
(2) ?#8220;pȝ变量”框中Q点?#8220;新徏”按钮Q?#8220;变量?#8221;填写“JAVA_HOME”Q变量值填写jdk解压后所在的目录?br />
l箋dCLASSPATH变量gؓ“.;%JAVA_HOME%\lib\tool.jar;%JAVA_HOME%\lib\rt.jar;”
(3) ?#8220;用户变量”框下面点?#8220;新徏”按钮Q?#8220;变量?#8221;?#8220;PATH”Q?#8220;变量?#8221;填写%PATH%;%JAVA_HOME%\binQ?br />
?配置Tomcat
1、下载Tomcat Zip压羃包,解压?br />
2、修改startup.bat文gQ?br />
在第一行前面加入如下两行-Q?br />
SET JAVA_HOME=(JDK目录)
SET CATALINA_HOME=(前面解压后Tomcat的目?/span>)
如果需要用shutdown.bat关闭服务器的话,也按照上面加入两行?br />
3、这Pq行startup.bat可以运行服务器Q运行shutdown.bat可以关闭服务器了?br />
?Tomcat加入服务
1、修改bin目录中的service.bat:
d下面q些代码Q?br />
-----------------------------------------------------------------------------
REM d下面的一?br />
set CATALINA_HOME=(前面解压后Tomcat的目?/span>)
REM 如果从来没有安装qTomcatQ或者保证Services.msc启动服务理器检查没有Apache Tomcatpȝ服务Q到此你可以{到第REM 二步了。否则l往下走
REM 按照描述修改下面的几?br />
set SERVICE_NAME=Tomcat5
REM 上面一行,Tomcat5修改成你需要的服务名,q个是一后用net start/stop来操作的服务名称?br />
set PR_DISPLAYNAME=Apache Tomcat
REM 上面一行,Apache Tomcat改ؓ你需要的昄服务名,q个显C在服务理器中?br />
set PR_DESCRIPTION=Apache Tomcat Server - http://jakarta.apache.org/tomcat
REM q一行改不改无所谓,是服务的描述Q根据自q喜好军_吧?br />
-----------------------------------------------------------------------------
2、运行cmd打开控制収ͼq入Tomat目录/bin文g夹,输入如下命oq行?br />
service.bat install
E序提示QThe service 'Tomcat5Q或者你修改一后的SERVICE_NAMEQ? has been installed
说明服务Tomcat已经被安装成功?br />
Z说一下,q行service.bat remove可以U除服务?br />
3、到q里Q服务添加成功,q行services.mscQ可以看到添加的服务Q默认状态下该服务是手动q行的,在他的属性中Q将启动cd更改?#8220;自动”Q以后机器启动以后Tomcat在后台启动了?br />
?控制台控制服务的命o
启动服务
net Start 服务?br />
关闭服务
net stop 服务?br />
注:
1 此服务名可以是SERVICE_NAMEQ也可以是PR_DISPLAYNAME;
2 如果服务名中包含I格或者中文,请将服务名用半角双引号包含v来?br />
最后,预祝W一ơ配|顺利?br />
]]>
q入Qwindow -> Preference... -> MyEclipse -> Editors -> XML ->XML Catalog
选择Q选中“User Specified Entries”Q点?#8220;Add...”按钮
填入Q?/p>
URI: 请选择本地文gpȝ上SPRING_HOME\dist\resources\spring-beans-2.0.xsd 文g
Key Type: 选择Schema Location
Key: http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
点击定
spring配置文g关闭再重新打开卛_。可以用MyEclipse XML Editor打开q些xml文g?/p>
直接?a class="external text" title="http://prdownloads.sourceforge.net/jadclipse/net.sf.jadclipse_3.3.0.jar?download" rel="nofollow">net.sf.jadclipse_3.3.0.jar 复制到eclipse的plugins目录下?br />
个h认ؓq样比较单,如果大家喜欢把自qplugins拿出来放C个单独的文g夹,可以自己googleQ这里不做过多介l?br />
然后启动eclipseQ打开QWindow->Preferences->Java->JadClipse
1、Path to decompilerQ这里设|反~译工具jad的全路径名,比如Q?JAVA_HOME%\bin\jad.exe?是刚才jad解压的\径,例如在我的电脑中的\径就是C:\Program Files\Java\jdk1.5.0_13\bin\jad.exe?br />
2、Directory for temporary filesQ这里设|时文件\径,无所谓了?br />
至于Window->Preferences->Java->JadClipse目录下的DebugQDirectivesQFormattingQMisc目录中的参数讄Q自q一下就能明白什么意思,可以不用,q里׃|嗦了?/p>
3、eclipse会自动将JadClipse Class File Viewer讄成class文g的缺省打开方式。如果没有默认,可以在Eclipse的Windows—?gt; Perference—?gt;General->Editors->File Associations中修?#8220;*.class”默认兌的编辑器?#8220;JadClipse Class File Viewer”。设|完成后Q双?.class文gQeclipse自动反~译。我的是默认了,大家有问题的可以试试?/p>
?/span>Q对于存在源代码的类Q它不会反编译,也就是说它还是会用eclipse自带的Class File Viewer查看class文g。这点很重要哦。毕竟反~译的不如h家的源码好?br />
?/span>Q把鼠标焦点攑ֈq个如要查看源码的方法上Q然后按F3Qeclipse查看源码快捷键)Q呵呵~源代码出C?br />
不过q是要说明一下,如果可以的话Q还是尽量找官方的源码(在eclipse指定源码位置Q就可以按F3查看Q怎么指定Q自己googleQ,而且一般都带说明文档的Q这L话,不必每次使用的时候都查看源码Q只要把她的API文档导入可以了(跟指定源码一?Q开发的时候会方便一些,如果自己学习的话可以没事看看源码?/p>
]]>