??xml version="1.0" encoding="utf-8" standalone="yes"?>
扑ֈ一个解压版本的tomcat攑ֈL目录Q然后听q命令行q入到该目录下的bin目录里面Q里面应该有个service.bat文gQ执?span style="color: #008000">service remove tomcat6Q这样就删除服务了。下面就可以安装Q?img src ="http://www.aygfsteel.com/rain1102/aggbug/303075.html" width = "1" height = "1" />
]]>
HttpClient httpclient = new DefaultHttpClient();
HttpPost method = new HttpPost("http://202.127.145.134/scdb/translate/translate.asp");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("eng2chi", "BISPYROQUINE")); //参数
try {
method.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); //讄参数lPost
HttpResponse response = httpclient.execute(method);
HttpEntity entity = response.getEntity();
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "gb2312"));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
if (entity != null) {
entity.consumeContent();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
严重: IOException while loading persisted sessions: Java.io.EOFException
Cause by: Exception loading sessions from persistent storage
?br /> Jexcelapi的用参考:http://blog.csdn.net/yfhdsz/archive/2006/10/30/1356670.aspx
apache POI 参考:http://blog.csdn.net/yuansicau/archive/2006/08/31/1150046.aspx
关键是要理解
javadexcel文g的顺序是Q?br />
Excel文g->工作?>?>单元?对应到POI中,为:workbook->sheet->row->cell
注意Q?br />
注意Q?nbsp;
1.sheetQ??开始,以workbook.getNumberOfSheets()-1l束
2.rowQ??开?getFirstRowNum)Q以getLastRowNuml束
3.cellQ??开?getFirstCellNum)Q以getLastCellNuml束,
l束的数目不知什么原因与昄的长度不同,可能会偏?br />
如何插图片到Excel?br />
public static void createPicture() {
FileOutputStream fileOut = null;
BufferedImage bufferImg = null;
BufferedImage bufferImg1 = null;
try {
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();
bufferImg = ImageIO.read(new File("C:/Documents and Settings/All Users/Documents/My Pictures/CZ囄/Sunset.jpg"));
bufferImg1 = ImageIO.read(new File("C:/Documents and Settings/All Users/Documents/My Pictures/CZ囄/Water lilies.jpg"));
ImageIO.write(bufferImg, "jpeg", byteArrayOut);
ImageIO.write(bufferImg1, "jpeg", byteArrayOut1);
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("new sheet");
// HSSFRow row = sheet1.createRow(2);
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 512, 255,
(short) 0, 0, (short) 10, 10);
HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 512, 255,
(short) 0, 15, (short) 10, 20);
/**
* public HSSFClientAnchor(int dx1, int dy1, int dx2, int dy2, short
* col1, int row1, short col2, int row2)
* Creates a new client anchor
* and sets the top-left and bottom-right coordinates of the anchor.
*
* Parameters: dx1 - the x coordinate within the first cell.
* dy1 - the y coordinate within the first cell.
* dx2 - the x coordinate within the second cell.
* dy2 - the y coordinate within the second cell.
* col1 - the column (0 based) of the first cell.
* row1 - the row (0 based) of the first cell.
* col2 - the column (0 based) of the second cell.
* row2 - the row (0 based) of the second cell.
* 注意:(col1,row1)表示囄左上角所在单元格
* (col2,row2)表示囄右下角所在单元格,
* 先是?再行,序不要反了.
* (dx1,dy1)表示囄左上角在单元g的坐?
* ((dx2,dy2)表示囄右下角在单元g的坐?
*/
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
patriarch.createPicture(anchor1, wb.addPicture(byteArrayOut1
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
fileOut = new FileOutputStream("e:/study/workbook.xls");
wb.write(fileOut);
fileOut.close();
} catch (IOException io) {
io.printStackTrace();
System.out.println("io erorr : " + io.getMessage());
} finally {
if (fileOut != null)
try {
fileOut.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
<Host name="one.localhost" debug="0" appBase="D:\\Tomcat 5.0\\webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>one.localhost.com</Alias>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="D:\\Tomcat 5.0\\webapps\\kk\\a" reloadable="true" caseSensitive="false" debug="0"></Context>
</Host>
<Host name="two.localhost" debug="0" appBase="D:\\Tomcat 5.0\\webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>two.localhost.com</Alias>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="D:\\Tomcat 5.0\\webapps\\kk\\b" reloadable="true" caseSensitive="false" debug="0"></Context>
</Host>
因无域名解析服务?所以在hosts上配,来模拟dns解析.
10.1.1.241 localhost 指向gg文g?br /> 10.1.1.241 localhost.com 指向gg文g?br /> 10.1.1.241 one.localhost 指向a文g?br /> 10.1.1.241 one.localhost.com 指向a文g?br /> 10.1.1.241 two.localhost 指向b文g?br /> 10.1.1.241 two.localhost.com 指向b文g?/p>
l过多方面尝?l于在tomcat下配|成功了.
Code: |
Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, initCtxFac); env.put(Context.PROVIDER_URL, providerUrl); try { ctx = new InitialContext(env); conFactory = (QueueConnectionFactory) ctx.lookup (queueConFacLookupName); ----- ----- |
Code: |
Exception in thread "main" Java.lang.NoSuchFieldError: TRACE at org.jboss.logging.Log4jLoggerPlugin.isTraceEnabled(Log4jLoggerPlugin.java:85) at org.jboss.logging.Logger.isTraceEnabled(Logger.java:122) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:622) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:589) at javax.naming.InitialContext.lookup(InitialContext.java:351) at com.cognizant.util.ServiceHelper.initQueueService(ServiceHelper.java:153) at com.cognizant.main.StartUp.<init>(StartUp.java:28) at com.cognizant.main.StartUp.main(StartUp.java:46) |
Quote: |
Exception in thread "main" Java.lang.NoSuchFieldError: TRACE |
一旦你定义了类的参敎ͼ创徏一个CommandLineParserQƈ分析已传送到L法中的组?/p>
BasicParser parser = new BasicParser();
CommandLine cl = parser.parse(opts, args);
{到所有的参数都被解析以后Q你可以开始检查返回的命o行,q些命o行中Q提供用L参数和值已被语法分析程序详l检查过了?br />
if (cl.hasOption('h')) {
HelpFormatter hf = new HelpFormatter();
hf.printHelp("OptionsTip", opts);
} else {
System.out.println(cl.getOptionValue("u"));
System.out.println(cl.getOptionValue("dsn"));
}
p你看到的那样Q你可以使用HelpRormattercMؓ你的E序自动C生用信息?br />
下面看一下全部的代码Q?br />
package com.founder.common;
import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
public class OptionsTip {
public static void main(String[] args) {
try {
Options opts = new Options();
opts.addOption("h", false, "Print help for this application");
opts.addOption("u", true, "The username to use");
opts.addOption("dsn", true, "The data source to use");
BasicParser parser = new BasicParser();
CommandLine cl = parser.parse(opts, args);
if (cl.hasOption('h')) {
HelpFormatter hf = new HelpFormatter();
hf.printHelp("OptionsTip", opts);
} else {
System.out.println(cl.getOptionValue("u"));
System.out.println(cl.getOptionValue("dsn"));
}
} catch (ParseException pe) {
pe.printStackTrace();
}
}
}
注:使用此程序时候别忘了把commons-cli-1.0.jar加入C的classpath?/span>
q行l果Q?br />
E:\javaworkspace\collection\src>java com.founder.common.OptionsTip -h
usage: OptionsTip
-dsn The data source to use
-h Print help for this application
-u The username to use
E:\javaworkspace\collection\src>java com.founder.common.OptionsTip -u eric -dsn founder
eric
founder
接口介绍
1. Collection<E> 集合的根接口Q它包含了诸如add、remove、size和toArray之类的方法?br /> 2. Set<E> 不包含重复元素的集合Q它包含的元素不必按照Q何特定的序存储(它扩展了Collection<E>)
3. SortedSet<E> 一个集(set)Q它包含的元素都是排好序?它扩展了Set<E>)请参见:
描述
cL?/strong> | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Schema 对象的工厂?/td>
| |||||||||||||||||||||||||||||||||||||||||||||||||||
创徏
ValidatorHandler 所定的类型信息的讉K?/td>
| |||||||||||||||||||||||||||||||||||||||||||||||||||
Schema ?XML 文档的处理器?/td>
| |||||||||||||||||||||||||||||||||||||||||||||||||||
软g?javax.xml.validation 的描q?
此包提供了用?XML 文档验证?API?em>Validation 是验?XML 文档是否为指?XML schema 的实例的q程。XML 模式定义了其实例文档表C的内容模式Q也UCؓ grammar ?vocabularyQ? 有多U流行的技术用于创?XML 模式。最行的技术包括:
以前?JAXP 版本支持作ؓ XML 解析器的功能的验证,要么通过 JAXP 验证 API ?XML 文档解析中分d实例文档的验证。这h几种优点Q一些原因包括:
用例?/a>以下CZ演示了通过 Validation API 验证 XML 文档Qؓ了方侉K读,此例未显C某些异常处理)Q? // parse an XML document into a DOM tree DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = parser.parse(new File("instance.xml")); // create a SchemaFactory capable of understanding WXS schemas SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); // load a WXS schema, represented by a Schema instance Source schemaFile = new StreamSource(new File("mySchema.xsd")); Schema schema = factory.newSchema(schemaFile); // create a Validator instance, which can be used to validate an instance document Validator validator = schema.newValidator(); // validate the DOM tree try { validator.validate(new DOMSource(document)); } catch (SAXException e) { // instance document is invalid! } JAXP 解析 API 已经与验?API q行了集成。应用程序可以通过验证 API 创徏 disableUploadTimeout='true' enableLookups='false' maxSpareThreads='75' maxThreads='150' minSpareThreads='25' port='8080' redirectPort='8443' URIEncoding='GBK'/> 加上 URIEncoding='GBK' 卛_? ]]> 1.1服务?/strong> q个日志服务器的服务器端需要运行: log4j jar包中的org.apache.log4j.net.SocketServer 加参?【本地监听端口】【配|文件】【客L配置文g目录?br /> W三个参数【配|文件目录】其实指的是针对每个客户端的配置文gQ等会详l讲Q现在用“.”可以了. 服务器端的配|文件可以用q个Q引自利用Log4j 创徏日志服务?By ??Q: #文g名socketserver.properties #如果需要显C日志界面,可以本行启?br /> #log4j.rootCategory=, A1 log4j.rootLogger=DEBUG,A3 log4j.category.org.apache.log4j.net=INFO log4j.appender.A1=org.apache.log4j.lf5.LF5Appender log4j.appender.A1.MaxNumberOfRecords=700 log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender log4j.appender.A4.file=server.log log4j.appender.A4.DatePattern='.'yyyyMMdd log4j.appender.A4.layout=org.apache.log4j.PatternLayout log4j.appender.A4.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n log4j.appender.A3=org.apache.log4j.RollingFileAppender log4j.appender.A3.file=server2.log log4j.appender.A3.MaxFileSize=1024KB log4j.appender.A3.MaxBackupIndex=999 log4j.appender.A3.layout=org.apache.log4j.PatternLayout log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 其中A1是启动Lf5的log监视l端QA3限制大小的文ӞA4是日期滚动文件?br /> 单A3QA4是讲所有客L的日志都存放C同一个日志文件中Q我觉的q种Ҏq不好?br /> 1.2客户?/strong> 客户端的配置文g是这LQ?br /> log4j.rootCategory=,SOCKET log4j.addivity.org.apache=true #应用于socket log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender log4j.appender.SOCKET.RemoteHost=localhost #服务器的IP地址 log4j.appender.SOCKET.Port=1978 #服务器的监听端口 log4j.appender.SOCKET.LocationInfo=true #q个是什么我不知?br /> log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout log4j.appender.SOCKET.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%t%m%n #A2 log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender log4j.appender.A2.file=server.log log4j.appender.A2.DatePattern='.'yyyy-MM-dd log4j.appender.A2.layout=org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 启动服务器端,再运行客L可以了!但所有的服务器端/客户端的日志都放C一个日志文件中! 2.E微高点的使用 下面讲如何把各个客户端和服务器端的日志分别放C同的日志文g? q个我在|上找了好久也没有找? 2.1服务?/strong> 服务器的配置文g不用怎么改动Q如果你不需要在同一个文件中存放所有日志,可以把配|文件第一行的A3L?br /> 但服务器端有个更大的ȝQ代码有问题Q问题够大了吧,不知道算不算是个bugQ我用的?.2.11版log4jQ?br /> 改吧! 打开log4j目录下的src\java\org\apache\log4j\net\SocketServer.java 在这D中改动(看下面代码第12? LoggerRepository configureHierarchy(InetAddress inetAddress) { cat.info("Locating configuration file for "+inetAddress); // We assume that the toSting method of InetAddress returns is in // the format hostname/d1.d2.d3.d4 e.g. torino/192.168.1.1 String s = inetAddress.toString(); int i = s.indexOf("/"); if(i == -1) { cat.warn("Could not parse the inetAddress ["+inetAddress+ "]. Using default hierarchy."); return genericHierarchy(); } else { //q个是什么意?专门?/"W号?明显是错?闭掉 // String key = s.substring(0, i); //改ؓ String key = s.substring(i+1); File configFile = new File(dir, key+CONFIG_FILE_EXT); if(configFile.exists()) { Hierarchy h = new Hierarchy(new RootLogger((Level) Priority.DEBUG)); hierarchyMap.put(inetAddress, h); new PropertyConfigurator().doConfigure(configFile.getAbsolutePath(), h); return h; } else { cat.warn("Could not find config file ["+configFile+"]."); return genericHierarchy(); } } } ~译文g! 打开log4j目录下的src\java\org\apache\log4j\net\SocketNode.java (改这D|因ؓ我用的时候出?看不出来改不Ҏ什么区? 改第54?br /> ois = new ObjectInputStream( new BufferedInputStream(socket.getInputStream())); ?br /> InputStream is = socket.getInputStream(); if (is != null) { ois = new ObjectInputStream(new BufferedInputStream(is)); } 文g头加 import Java.io.InputStream; ~译文g! 现在为每个配|客L~配|文?把配|文件放到【客L配置文g目录】中: log4j.rootCategory=,A4 log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender log4j.appender.A4.file=127.0.0.1.log #为每个客L取不同的名字 log4j.appender.A4.DatePattern='.'yyyyMMdd log4j.appender.A4.layout=org.apache.log4j.PatternLayout log4j.appender.A4.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 保存文g名ؓ[客户端ip地址].lcf ?92.168.0.126.lcf 2.2 客户?/strong> 客户端不用改?太幸q了!! ok? 启动服务?启动客户?现在服务器的日志攑ֈ了server.log?有配|文件的客户端的日志会放到相应的日志文g?没有配置文g的客L的日志依然放在server.log? SocketServer.java ?SocketNode.java两个文g可以单独做一个工E?把他们的packageLp? ]]>
是Spring AOP的问?主要是出现在事务q块,׃我用的是Spring2.0 AOP 来声明事?在声明事务的时候我把taget-prent-class="true" ?但事实上不能为true.Lq个OK了因针对接口代理. ]]> 或者Listen:80 d或更改ؓ你要d的端口(不能有冲H)如下面的例子Q? Listen 80 Listen 81 Listen 82 再徏立虚拟主机,如下: NameVirtualHost localhost:80 NameVirtualHost localhost:2222 NameVirtualHost localhost:6666 <VirtualHost localhost:80> DocumentRoot E:\webroot\ ServerName localhost:80 </VirtualHost> <VirtualHost localhost:2222> DocumentRoot f:\webroot\ ServerName locahost:2222 </VirtualHost> <VirtualHost localhost:6666 > DocumentRoot D:\webroot\web\phpmyadmin ServerName localhost:6666 </VirtualHost> ]]> NameVirtualHost 111.22.33.44 <VirtualHost 111.22.33.44> ServerName www.sample.com DocumentRoot /www/sample </VirtualHost> <VirtualHost 111.22.33.44> ServerName www.sample2.com DocumentRoot /www/sample2 </VirtualHost> 但是在有?IP 地址充裕Q但是机器资源紧张的环境下,我们可能要把多个域名解析到同一台机器上Q其配置Ҏ为: <VirtualHost www.smallco.com> ServerName www.smallco.com DocumentRoot /groups/smallco/www </VirtualHost> <VirtualHost www.baygroup.org> ServerName www.baygroup.org DocumentRoot /groups/baygroup/www </VirtualHost> q种Ҏ下,要求机器配置多个 IP 地址?br /> ]]> 1Q?nbsp;环境要求Q?/span> 已安?/span>Javaq_Q版本ؓj2sdk1.4.2Q环境变?/span>JAVA_HOME设ؓC:"j2sdk1.4.2Q?/span> 2Q?nbsp;下蝲与运行: ?/span>Apache|站上下载得C个压~的文gjames-2.1-bin.zipQ大ؓ4.44MQ将此包解压?/span>C:"James"james-2.1下?/span> q行分ؓ两种方式Q前台直接运行、作为后台服务运行;
1>前台直接q行Q?/span> ?/span>C:"James"james-2.1"bin下运?/span>run.bat q是会出玎ͼ
Using PHOENIX_HOME: C:"James"james-2.1 Using PHOENIX_TMPDIR: C:"James"james-2.1"temp Using JAVA_HOME: C:"j2sdk1.4.2
Phoenix 4.0.1
James 2.1 Remote Manager Service started plain:4555 POP3 Service started plain:110 SMTP Service started plain:25 NNTP Service Disabled Fetch POP Disabled
q是pC?/span>James邮g服务以开启,不过Window下不能关闭控制台H口Q否者邮件服务会停止。如要克服此~点必须?/span>James邮g服务作ؓ作ؓ后台服务q行?/span>
停止前台q行?/span>Ctrl+C,会出玎ͼ JVM exiting abnormally. Shutting down Phoenix. l止批处理操作吗(Y/N)? 2>后台服务q行Q?/span> ?/span>C:"James"james-2.1"conf目录下的wrapper.conf拯?/span>C:"James"james-2.1"bin卛_?/span>wrapper.exe的目录下Q运行: wrapper.exe -i C:"James"james-2.1"bin"wrapper.conf 然后在控刉板中开启服务或重启卛_?/span>
卸蝲后台服务Q?/span> ?/span>C:"James"james-2.1"bin卛_?/span>wrapper.exe的目录下Q运行: wrapper.exe -r C:"James"james-2.1"bin"wrapper.conf 3Q?nbsp; 二?span style="font-family: 宋体">配置Q?/span> 1>服务器端配置Q邮件服务器的名字假讑֏EmailServerQ服务器理员名AdminQ?/span> 首先停止已开启的James邮g服务Q然后打开文gC:"James"james-2.1"apps"james"SAR-INF"config.xml?/span> Ø ?/span>config.xml文g中,扑ֈPostmaster@localhostQ把此项改ؓAdmin@EmailServerQ同Ӟ扑ֈ位于 <!-- By default, the servername 'localhost' is specified. This can be removed, if required. --> - <!-- --> - <!-- Warning: If you are using fetchpop it is important to include the --> - <!-- fetched domains in the server name list to prevent looping. --> - <servernames autodetect="true" autodetectIP="true"> - <!-- CONFIRM? --> <servername> localhost </servername> </servernames> ?/span>localhostQ把此项改ؓEmailServer。这样就可以让其它机器也能访问邮件系l?/span>
Ø DNS配置Q找到同上文件中<dnsserver>D中的如下程序段Q?/span> - <dnsserver> - <servers> - <!-- CONFIRM? --> - <!-- Enter ip address of your DNS server, one IP address per server --> - <!-- element. The default configuration assumes a DNS server on the localhost. --> <server>127.0.0.1</server> </servers> <authoritative>false</authoritative> </dnsserver> ?/span>127.0.0.1的位|填?/span>DNS服务器的IP地址Q?/span>
Ø 修改理员密码: 扑ֈ同上文g中的<administrator_accounts>D,如下E序D?/span> - <administrator_accounts> - <!-- CHECKME! --> - <!-- Change the default login/password. --> <account login="root" password="root" /> </administrator_accounts>
默认用户名root与密?/span>root修改为需要的?/span>
Ø 修改telnet理E序d端口 Q(默认?/span>4555Q?/span> 扑ֈ同上文g中的<remotemanager>D下?/span>port如下E序D?/span> - <remotemanager> <port>4555</port> - <!-- Uncomment this if you want to bind to a specific inetaddress --> - <!-- ?/span><port>4555</port>之间的端口号4555改ؓ需要的端口?/span>
2> 客户端配|?/span>Q(略)
3>帐号理 James的̎L理是通过telnet完成的,d命o为:
telnet EmailServer 4555
其中EmailServer也可以换?/span>IPQ?/span>4555是端口号。登录时需要用户名和密码,开始默认的用户名和密码均ؓroot。若d成功Q提C如下: JAMES Remote Administration Tool 2.1 Please enter your login and password Login id: 此时输入root用户?/span>,然后会出玎ͼ Password: 输入密码root 注意Q在有些操作pȝ?/span>Windows2000上,用户输入均不昄?/span>
telnet命o列表Q?/span>
4>用户信息的数据库存储 James邮g用户的用户信息默认保存在apps"james"var"users目录下,通过修改配置文gapps"james"SAR-INF"config.xmlQ可以把用户信息保存到数据库中,配置Ҏ如下Q?/span> 假设使用的是MySQL数据库:
W一步:首先?/span>MySQL的驱动程序(例如Q?/span>mysql-connector-java-3.1.6-bin.jarQ考到james?/span>lib目录下(例如Q?/span>D:"james"libQ?/span>
W二步:?/span>MySQL中新Z个数据库mailQ?/span>
W三步:打开config.xmlQ找?/span><users-store>q一,此面默认的内容ؓQ?/span>
需要修改ؓQ?/span>
其实如不修改也行Q因为文件下面也有实例,不过是用<!-- ?/span> --> 注释掉的Q打开卛_Q记住把 <repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository"> ?/span><!-- ?/span> --> 注释掉; 通过修改Q我们就把用户信息的存储介质?/span>fileҎ?/span>dbQ?/span><sqlFile>是指明了?/span>db中的数据表结构及相关数据库信息?/span>
W四步:仍然?/span>config.xmlQ找?/span><data-sources>,默认内容为空Q把此项内容修改为:
或打开文g下面实例?/span><!-- ?/span> --> 注释 <driver>是指MySQL?/span>JDBC驱动Q注意这个默认的<driver>是有问题的,要改?/span>MySQL的驱动程序中Driver.class的\径,卻I <driver>com.mysql.jdbc.Driver</driver> <dburl>指数据库的访问\径,IP后的mail?/span>MySQL?span style="color: blue">新徏数据库名Q接下来是用户名、密码及最大连接数?/span>
再次启动Ӟjames在mail数据库中自动创徏有关用户的表根{?/span>
xQ数据库配置完成Q启?/span>JamesQ若正常无误Q请通过telnetd一个新用户Q比?/span>adduser holen 123456Q然后检?/span>MySQL中的mail数据库,下面有一个表usersQ这?/span>JamesҎfile://conf/sqlResources.xml的内容创建的?/span> 通过以上配置Q?/span>James的用户信息就可以保存在数据库中了?/span> 注:修改以前的̎户会丢失Q?/span>
一、FAQ 1?/span>在启?/span>jamesӞ提示POP3?/span>SMTP不能使用Q?/span>
h查一下,?#8220;理工具?/span>>服务”里面Q是不是启动了别的邮件服务器Q已?/span>110?/span>25端口占用了?/span> 实例Q?/span> james前台直接q行时出错: ERROR 2005-08-25 08:58:38.642 [Phoenix.] (): Component named "smtpserver" failed to pass through the Initialization stage. (Reason: Java.net.BindException: Address already in use: JVM_Bind).
ERROR 2005-08-25 08:58:38.652 [Phoenix.] (): There was an error running phase "startup" for Block named "smtpserver". (Reason: Component named "smtpserver" failed to pass through the Initialization stage. (Reason: Java.net.BindException: Address already in use: JVM_Bind).).
org.apache.excalibur.containerkit.lifecycle.LifecycleException: Component named "smtpserver" failed to pass through the Initialization stage. (Reason: Java.net.BindException: Address already in use: JVM_Bind).
原因Q?/span> james默认讄不允许在同一台机器上跑两个邮件服务器q程。必d掉另一个! 方法: console界面下: d:> telnet L?/span> 25Q或110Q?/span> 如果可以dQ出?/span> 220 L?/span> Microsoft ESMTP MAIL Service, Version: 6.0.2600.1106 ready at Thu, 25 Aug 2005 14:14:36 +0800 则说明此机器上已有一台邮件服务器在运行?/span>
解决Q?/span> ?/span>Windows上运行服务: 跨网传输电子邮g的服?/span>Simple Mail Transfer Protocol (SMTP)Q是否启?/span> 如启动关闭之Q?/span>
2?/span> JAVA_HOME找不刎ͼ
请在run.bat中指?/span>JAVA_HOMEQ若q不行,请在“我的电脑?/span>>pȝ?/span>>高?/span>>环境变量”中添加一?/span>JAVA_HOME?/span>
3?/span>服务器启动正常,但客L不能收发邮gQ?/span>
h查客L配置是否正常Q参照前面所Ԍ另外Q请?/span>james下的config.xmlQ是否把localhostҎ了机器名?/span>
4、修改ؓ数据库储存后Q?/span>james启动出错Q?/span>
一般是数据库驱动有错。检查一?/span> <data-source name="maildb" class="org.apache.james.util.mordred.JdbcDataSource"> ?/span><driver>org.gjt.mm.mysql.Driver</driver>是否?/span> 1.安装apache2.2.4 2.下蝲q解?php5.2.3 win-zip?br>3.讄 apache 配置文g httpd.conf 文g a.修改web服务器根目录 DocumentRoot D:\Apache2.2\htdocs 成 DocumentRoot "D:/webroot" b.修改 <Directory "D:\Apache2.2\htdocs"> ?<Directory "D:/webroot"> c.修改 <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Satisfy all </Directory> 成 <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Allow from all Satisfy all </Directory> d.d php功能 ScriptAlias /php/ "D:/php5.2.3/" Action application/x-httpd-php "/php/php-cgi.exe" AddType application/x-httpd-php .php 4.讄pȝ环境变量 path d ;D:\php5.2.3;D:\php5.2.3\ext 5. d讉Kmysql功能 a.去除 extension=php_mysql.dll 前面?;?br> b.修改extension_dir ?php ext目录Q如Q?extension_dir = "D:/php5.2.3/ext/" 6.q行试代码 <?php ]]> 下蝲地址Q?nbsp; http://apache.justdn.org/httpd/binaries/win32/......-x86-no_ssl.msi 之后可以进行安装了。假讑֮装在 D:\Program Files\Apache Software Foundation\Apache2.2 W二步、下?nbsp;PHP 5.2.1 ?nbsp;www.php.net 下蝲 PHP 5.2.3 ?nbsp;win32 包,我个人喜Ƣ?nbsp;PHP 5.2.3 zip packageQ而不喜欢使用 PHP 5.2.3 installerQ因为我觉得使用 PHP 5.2.3 zip package 便于以后升?nbsp; 下蝲地址Q?nbsp; http://cn.php.net/get/php-5.2.3-Win32.zip/from/this/mirror 下载完?nbsp;php-5.2.1-Win32.zip 文g解压~到 D:\Program Files\PHP 目录Q将该目录下?nbsp;php.ini-dist 更名?nbsp;php.ini?nbsp; W三步,配置 Apache 2.2.4 打开目录QD:\Program Files\Apache Software Foundation\Apache2.2\conf\extra 新徏一个名为:httpd-php5.conf 的文本文Ӟ用记事本打开Q添加以下内?nbsp; LoadModule php5_module "D:\Program Files\PHP\php5apache2_2.dll" AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.php PHPIniDir "D:\Program Files\PHP" 然后用记事本打开QD:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 在文件末添加一行: Include conf/extra/httpd-php5.conf W四步,试 重新启动 ApacheQ打开目录QD:\Program Files\Apache Software Foundation\Apache2.2\htdocs 新徏文gQindex.php 输入内容Q?nbsp; 代码:<?php phpinfo(); ?> ]]> OS: Windows XP SP2 1) 安装Apache Server 2) 安装SVN 3) 配置邮g通知以及修改log权限 1. 安装apache2.0.59,从这里可以下载到http://apache.justdn.org/httpd/binaries/win32/apache_2.2.3-win32-x86-no_ssl.msi 安装q程中设|以下参敎ͼ Network Domain: localhost Server name: localhost Administrator's Emai Address: windymax@126.com 安装到默认\径ؓC:\Program Files\Apache Group\Apache2 2. 安装subversion1.4.0,从这里下?a target=_blank>http://www.iusesvn.com/bbs/download/svn-win32-1.4.0.zip 安装到默认\径ؓC:\Program Files\Subversion 默认安装后,在apache的配|文件中会自动加入以下两行?br>LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so" LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so" 把这行的注释L LoadModule dav_fs_module modules/mod_dav_fs.so 拯C:\Program Files\Subversion\bin下的libdb44.dll到这个目录下C:\Program Files\Apache Group\Apache2\bin 打开apache的配|文件在末尾处加入以下参敎ͼ <Location /svn> DAV svn SVNPath d:\svndata\test AuthType Basic AuthName "Windy SVN" AuthUserFile d:\svndata\test\passwd Require valid-user </Location> 保存?在这里权限文件我不多讲了Q大家多做实验就明白? 建立仓库 打开CMD命o行界面,"开? -> "q行" -> "cmd" -> "回R" C:\Documents and Settings\windy> d: //q入D?因ؓ我们要在D盘下创徏仓库) D:\> md svndata //创徏一个名叫svndata的目?br>D:\> c: //q入C?br>C:\Documents and Settings\windy> cd\ //退到C盘根目录 C:\Documents and Settings\windy> cd C:\Program Files\Subversion\bin //q入subversion/bin目录 C:\Program Files\Subversion\bin> svnadmin create d:\svndata\test //用svnadmin命o创徏名ؓtest的仓?q条命o成功后,在test下会出现很多文g夹和文g) C:\Program Files\Subversion\bin> cd C:\Program Files\Apache Group\Apache2\bin //q入apache\bin目录 C:\Program Files\Apache Group\Apache2\bin> htpasswd -cm d:\svndata\test\passwd user1 //用htpasswd命o创徏W一个用?user1)Q同时生成密码认证文Ӟc参数为create,m参数为MD5加密方式 New password: ****** Re-type new password: ****** Adding password for user user1 //加入用户成功 C:\Program Files\Apache Group\Apache2\bin> htpasswd -m d:\svndata\test\passwd user2 //用htpasswd命o创徏W二个用?user2),注意如果在这时加入c参数会覆盖掉之前创徏的用户及文g?br>New password: ****** Re-type new password: ****** Adding password for user user2 //加入用户成功 重新启动apacheQ进行测试?br>用IE打开http://localhost/svnQ这时应该可以看?br>Revision 0: / -------------------------------------------------------------------------------- Powered by Subversion version 1.4.0 (r21228). //说明我们已经配置成功?br> 3. 配置邮g通知以及修改log权限 下蝲所需要的软g?br>--在这里下?a target=_blank>http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.819-MSWin32-x86-267479.msi到D盘根目录下?br>--下蝲http://download.microsoft.com/download/vc15/patch/1.52/w95/en-us/nmake15.exe到D盘根目录下?br>--下蝲http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Module-Build-0.2805.tar.gz到D盘根目录下,Module-Build-0.2805.tar.gz解压到D盘?br>--下蝲http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Authen-SASL-2.10.tar.gz到D盘根目录下,Authen-SASL-2.10.tar.gz解压到D盘?br>--下蝲http://search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz到D盘根目录下,Net-SMTP_auth-0.08.tar.gz解压到D盘?br>--下蝲http://search.cpan.org/CPAN/authors/id/D/DW/DWHEELER/SVN-Notify-2.64.tar.gz到D盘根目录下,SVN-Notify-2.64.tar.gz解压到D盘?br> 开始安装Perl以及模块 --安装Active PerlQ一路默认安装,默认路径为C:\Perl --试perl是否正常工作(q步很关? 打开CMD命o行界面,"开? -> "q行" -> "cmd" -> "回R" C:\Documents and Settings\windy> perl //如果没有报错Q说明已l正常工作,因ؓ安装perlӞ安装E序会自动设|好环境perl(如果在系l环境变量中没有自动dQ需手动dperl变量环境)Q具体做法是Q?br> "回到桌面" -> "鼠标右键我的电脑" -> "属? -> "高" -> "环境变量" -> "pȝ变量中Path最前面中添加C:\Perl\bin\;" ->"完成"?nbsp; //试Q如果报错,请重新启动电脑后q行试?br>--nmake15.exe改名为nmake.exe后拷贝到c:\windows\system32目录下?br>--试nmake是否是否正常工作(q步很关? 打开CMD命o行界面,"开? -> "q行" -> "cmd" -> "回R" C:\Documents and Settings\windy> nmake Microsoft (R) Program Maintenance Utility Version 1.50 Copyright (c) Microsoft Corp 1988-94. All rights reserved. //说明nmake已经正常工作 --安装Module-Build模块 打开CMD命o行界面,"开? -> "q行" -> "cmd" -> "回R" C:\Documents and Settings\windy> d: D:\> cd Module-Build-0.2805 D:\Module-Build-0.2805> perl Build.PL //攉pȝ环境变量 D:\Module-Build-0.2805> Build //q行~译 D:\Module-Build-0.2805> Build test //试 D:\Module-Build-0.2805> Build install //~译后安?nbsp; --安装Perl模块Authen::SASLQ进入Authen-SASL-2.10目录Q首先开打Makefile.PL 打开CMD命o行界面,"开? -> "q行" -> "cmd" -> "回R" C:\Documents and Settings\windy> d: D:\> cd Authen-SASL-2.10 D:\Authen-SASL-2.10> perl Makefile.PL //攉pȝ环境变量 出现选择安装提示Qy和n先后安装一?br> D:\Authen-SASL-2.10> nmake //q行~译 D:\Authen-SASL-2.10> nmake test //q行试 D:\Authen-SASL-2.10> nmake install //~译后安?br>--安装Perl模块Net::SMTP_auth 打开CMD命o行界面,"开? -> "q行" -> "cmd" -> "回R" C:\Documents and Settings\windy> d: D:\> cd Net-SMTP_auth-0.08 D:\Net-SMTP_auth-0.08> perl Makefile.PL //攉pȝ环境变量 D:\Net-SMTP_auth-0.08> nmake //q行~译 D:\Net-SMTP_auth-0.08> nmake test //试 D:\Net-SMTP_auth-0.08> nmake install //~译后安?br>--安装Perl模块SVN::Notify 打开CMD命o行界面,"开? -> "q行" -> "cmd" -> "回R" C:\Documents and Settings\windy> d: D:\> cd SVN-Notify-2.64 D:\SVN-Notify-2.64> perl Build.PL //攉pȝ环境变量 D:\SVN-Notify-2.64> Build //q行~译 D:\SVN-Notify-2.64> Build test //试 D:\SVN-Notify-2.64> Build installl //~译后安?nbsp; --安装完毕?br> 讄邮g通知 --拯post-commit.tmpl为post-commit.bat --删除末尾参数Q增加下面参敎ͼ set REPOS=%1 set REV=%2 SET PATH=C:\PERL\BIN; SET OS=Windows_NT SET SystemRoot=C:\WINDOWS svnnotify --repos-path %REPOS% -r %REV% --to windy@126.com --smtp smtp.126.com -H HTML::ColorDiff -d --subject-prefix [Windy SVN] //--to要跟你要发送给谁的邮g地址Q?-smtp后跟你自已的邮g服务器地址Q比如mail.126.com 讄log可以修改 --拯pre-revprop-change.tmpl为pre-revprop-change.bat --删除末尾参数Q增加下面参敎ͼ REM SVN pre-revprop-change hook allows edit of logmessages from TSVN setlocal set REPOS=%1 set REV=%2 set USER=%3 set PROPNAME=%4 set ACTION=%5 if not "%ACTION%"=="M" goto refuse if not "%PROPNAME%"=="svn:log" goto refuse goto OK :refuse echo Cann't set %PROPNAME%/%ACTION%, only svn:log is allowed 1>&2 endlocal exit 1 :OK endlocal exit 0 完成所有设|,开始测试?br> ]]>
]]> # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml! ]]> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n log4j.logger.java.sql.PreparedStatement=DEBUG log4j.logger.uk.ltd.getahead.dwr = ERROR U色的部分ؓ配置DWR日志输出Q配|完q以后检查一下lib文g夹下是否有commons-logging.jar。如果没有则dQ这样就可以关闭DWR的日志了Q?/p> |