??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲高清在线mv,亚洲国产女人aaa毛片在线,亚洲美女视频网站http://m.tkk7.com/anymobile/category/5738.htmlMake Anything Mobile!zh-cnThu, 13 Mar 2008 03:33:07 GMTThu, 13 Mar 2008 03:33:07 GMT60Windows 2003下配|Apache虚拟Lhttp://m.tkk7.com/anymobile/articles/122026.htmlXu JianxiangXu JianxiangMon, 04 Jun 2007 17:55:00 GMThttp://m.tkk7.com/anymobile/articles/122026.htmlhttp://m.tkk7.com/anymobile/comments/122026.htmlhttp://m.tkk7.com/anymobile/articles/122026.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/122026.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/122026.html作者:徐徏(netpirate@gmail.comQ?br>旉Q?007-6-4
|址Q?a >http://www.anymobile.org

q篇文章介绍了Apache虚拟L的配|方法,可以看作上一文章(Windows 2003下配|?/span>Apache代理Tomcat集群Q的后箋?/p>

1、需求:只有一台固|IP的服务期Q要求不同的域名可以使用不同的技术,ASP、PHP、J2EE{。当Ӟ主要以J2EE的处理ؓ丅R?/p>

2、解x法:一个Apache服务QA1Q充当虚拟主机,W二个Apache服务QA2Q解析PHP脚本Q第三个Apache服务QA3Q实现Tomcat集群的代理,另外Q用IIS解析ASPE序?br>
l构囑֦下:


3、Y件安装:Apache 2.2E序一套(D:\Apache\Apache2.2Q;Tomcat 5.5 安装E序拯2份;IIS使用Win2003自带的?/p>

4、安装步骤:

4.1 安装Apache2.2

4.2 修改A1的配|文Ӟconf/httpd.confQ支持虚拟主?/p>

Include conf/extra/httpd-vhosts.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so


4.3 修改虚拟L配置文gQconf/extra/httpd-vhosts.conf

# Virtual hosts
<VirtualHost *:80>
       ProxyPreserveHost On
       ProxyPass / http://127.0.0.1:81/asp/
       ProxyPassReverse / http://127.0.0.1:81/asp/
       ServerName www.asp.com
</VirtualHost>
<VirtualHost *:80>
       ProxyPass / http://www.php.com:82/
       ProxyPassReverse / http://www.php.com:82/
       ServerName www.php.com
</VirtualHost>
<VirtualHost *:80>
       ProxyPass / http://www.j2ee.com:83/
       ProxyPassReverse / http://www.j2ee.com:83/
       ServerName www.j2ee.com
</VirtualHost>


4.4 修改A2的配|文Ӟconf/httpd2.confQ支持PHP
 监听82端口Q配|略?br>
4.5 修改A3的配|文Ӟconf/httpd3.confQ支持代理Tomcat负蝲均衡
 监听83端口Q配|略Q参考上一文章?br>
4.6 修改两个Tomcat配置文gQ支持集?br> 略,参考上一文章?br>
4.7 修改IISQ监?1端口?br>
4.8 开启所有的服务

cd D:\Apache\Apache2.2\bin
httpd.exe -w -n "Apache2" -k start
httpd.exe -w -n "Apache2" -f conf/httpd2.conf
httpd.exe -w -n "Apache2" -f conf/httpd3.conf

D:\Apache\Tomcat S1\bin\startup.bat
D:\Apache\Tomcat S2\bin\startup.dat


配置完毕Q下面就可以讉K不同的域名了?br>
注:在具体的实践中,请将域名|换为相关的商业域名Q另外,需要用到host name的地方(如tomcat集群Q,代理转向处理地址Q一定要写域名;其他情况Q可以用本地ip地址加端口号的方法进行配|?br>Q全文完Q?/p>
资料Q?br>Windows 2003下配|?/span>Apache代理Tomcat集群 http://m.tkk7.com/anymobile/articles/112982.html

Apache HTTP Server 2.2中文手册 http://docs.huihoo.com/apache/httpd/2.2-cn/platform/windows.html

Apache HTTP Server 2.2 VirtualHost Examples http://httpd.apache.org/docs/2.2/vhosts/examples.html
Apache下用rewrite实现动态二U域名解?/font>  http://www.360doc.com/showweb/0/0/263162.aspx
Apache服务器二U域名的完美实现Q{载) http://www.360doc.com/showWeb/0/0/307889.aspx

Xu Jianxiang 2007-06-05 01:55 发表评论
]]>
Windows 2003下配|Apache代理Tomcat集群http://m.tkk7.com/anymobile/articles/112982.htmlXu JianxiangXu JianxiangMon, 23 Apr 2007 08:56:00 GMThttp://m.tkk7.com/anymobile/articles/112982.htmlhttp://m.tkk7.com/anymobile/comments/112982.htmlhttp://m.tkk7.com/anymobile/articles/112982.html#Feedback6http://m.tkk7.com/anymobile/comments/commentRss/112982.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/112982.htmlnetpirate@gmail.comQ?br>旉Q?007-4-19
|址Q?a >http://www.anymobile.org

索引 

0、工作原?br>1、Y件准?br>       1.1 软g条目
       1.2 安装JDK
       1.3 安装Tomcat
       1.4 安装Apache
2、配|Tomcat集群
       2.1 修改Tomcat默认应用
       2.2 dROOT应用
       2.3 修改server.xml
       2.4 修改web.xml
3、配|Apache HTTP代理
4、优化Tomcat配置
       4.1 屏蔽HTTP Connector
       4.2 配置虚拟L
       4.3 配置GBK~码
5、测试程?nbsp;

0、工作原?nbsp;

     ApacheQHTTP ServerQ?.2新增了代理服务器QProxyingQ功能:新的代理均衡模块Qmod_proxy_balancerQ提供负载均衡服务;AJP 1.3QApache JServ ProtocolQ替代jk/jk2{连接器与Tomcat通信?br>    l合Tomcat的集(ClusterQ功能,服务器结构如下:

    Load Balancer(Apache 2.2 Proxy)
         /           \
      Cluster1      Cluster2
      /     \        /     \
 Tomcat1 Tomcat2 Tomcat3 Tomcat4

注:l色部分为本文采用的配置情况?br>
1?nbsp;软g准备

1.1    软g条目

操作pȝ              WinXP/Win2003

JDK_5.0               http://java.sun.com/javase/downloads/index_jdk5.jsp (MSI Installer)
Apache_2.2.4        http://httpd.apache.org/download.cgi (MSI Installer)
Tomcat_5.5.23      http://tomcat.apache.org/download-55.cgi (Core Zip)

 

1.2    安装JDK
安装至目?D:\Java\jdk1.5.0 下,讄JAVA_HOME/CLASSPATH/PATHQ略?br>
1.3    安装Tomcat
解压~Zip文g至目?D:\Apache\Tomcat 5.5.23_S1 下;待配好后Q复制到D:\Apache\Tomcat 5.5.23_S2Q修改相关的端口和\径?br>
1.4    安装Apache
安装至目?D:\Apache\Apache2.2 下,可在Tomcat集群配置完成后再安装?/p>

2?nbsp;配置Tomcat集群

2.1 修改Tomcat默认应用

删除$CATALINA_HOME/webapps?CATALINA_HOME/temp目录Q?br>文件夹$CATALINA_HOME/conf/Catalina改名为Standalone?/p>

2.2 dROOT应用

$CATALINA_HOME/conf/Standalone/localhost/ROOT.xml

<?xml version=”1.0” encoding=”utf-8”?>
<Context path=”” docBase=”E:\Project\wwwroot”
         displayName=”Tomcat 1” debug=”0” privileged=”true” 
         antiResourceLocking=”false” antiJARLocking=”false”>

 <!—Default set of monitored resources -->

 <WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>


2.3 修改server.xml

$CATALINA_HOME/conf/server.xml

操作步骤

默认

Tomcat 1

Tomcat 2

2.3.1 修改Server端口

8005

10005

20005

2.3.2 修改AJP Connector端口

     Apache JServ Protocol 1.3

8009

10009

20009

2.3.3 修改HTTPConnector端口

8080

10001

20001

2.3.4 修改redirectPort端口

8443

10043

20043

2.3.5 屏蔽CatalinaQ打开StandaloneQƈ修改jvmRoute的gؓTomcat1/Tomcat2

2.3.6打开ClusterQ修改tcpListenPort

4001

10011

20011

2.4 修改web.xml 

$CATALINA_HOME/conf/web.xml

Q添加)<distributable/>

        或?/p>

$CATALINA_HOME/conf/Standalone/*/ROOT.xml

Q设|)<Context distributable="true" …/>

        讄集群Qsession׃n?/p>

3?nbsp;配置Apache HTTP代理Q实现负载均?/p>

有三U方法实现Tomcat的负载均衡:

aQ?nbsp;使用JK本地q接器(Tomcat-Apache通信插gQJServ->JK->JK2->AJServPQ;
bQ?nbsp;使用2.x版本的Aache HTTP服务器的代理模块Q?br>cQ?nbsp;使用Tomcat的blancer web应用?/p>

$APACHE_HOME/conf/httpd.conf

# d下面q段代码
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

ProxyRequests Off

ProxyPass / balancer://myCluster/
<Proxy balancer://myCluster/>
       BalancerMember ajp://localhost:10009 route=Tomcat1
       BalancerMember ajp://localhost:20009 route=Tomcat2
</Proxy>

 
       xQApache和Tomcat已经安装、配|完毕,可以依次q行两个TomcatQ?bin/startup.batQ和ApacheE序QApache MonitorQ?br>
注:
(1) 若系l设|了pȝ变量CATALINA_HOMEQ需修改/bin/startup.batQ屏蔽下面的代码Q?br>#if not "%CATALINA_HOME%" == "" goto gotHome
(2) Apache只是一个代理服务器Q所有的h全部转至Tomcat处理Q故启用ROOT应用?br>
4?nbsp;优化Tomcat配置

4.1 屏蔽HTTP Connector

 

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<!--
<Connector port="8080" …/>
-->

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443" …/>
-->


4.2 配置虚拟L

4.2.1 ~辑server.xml的EngineQ添加Host信息

$CATALINA_HOME/conf/server.xml

<Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat1">

       <Host name="localhost" appBase="webapps" …>… …</Host>

       <Host name="www.site.com" appBase="webapps/www.site.com"/>

    <Host name="www.site.net" appBase="webapps/www.site.net"/>

</Engine>

4.2.2 创徏虚拟L对应的Webapp目录

 

$CATALINA_HOME/webapps/www.site.com

$CATALINA_HOME/webapps/www.site.net

均ؓI目?/p>

4.2.3 创徏虚拟L   

$CATALINA_HOME/conf/Standalone/www.site.com/ROOT.xml

$CATALINA_HOME/conf/Standalone/www.site.net/ROOT.xml

<?xml version="1.0" encoding="utf-8"?>

<Context path="" docBase="E:\Project\{site name}" …>

 <WatchedResource>WEB-INF/web.xml</WatchedResource>

</Context>

另一个Tomcat Node也做cM的修改,q分别重启两个Tomcat?br>
4.3 配置GBK~码

 

$CATALINA_HOME/conf/server.xml

    <!-- Define an AJP 1.3 Connector on port 10009 -->

    <Connector port="10009" URIEncoding="GBK"

               enableLookups="false" redirectPort="10443" protocol="AJP/1.3" />


5、测试程?nbsp;

init.jsp

<%

session.setAttribute("name",request.getParameter("name"));

out.println("success!" + session.getId());

%>

testRoute.jsp

<%

String test = session.getId() + " - " + session.getAttribute("name");

System.out.println( new java.util.Date() + ":" + test);

out.println( test );

%>

讉K http://localhost/init.jsp?name=HAHAQ只L行一ơ)
讉K http://localhost/testRoute.jsp
讉K多次可以发玎ͼ两个Tomat服务器是均衡的,且session׃n?br> 

另外Q还可以讄路由JSESSIONID

$CATALINA_HOME/conf/server.xml

<!-- sessionIdAttribute default attribute name is

 org.apache.catalina.cluster.session.JvmRouteOrignalSessionID.

 JSESSIONID.{orignal node id} à

<Valve className="org.apache.catalina.cluster.session.JvmRouteBinderValve"

       enabled="true" sessionIdAttribute="takeoverSessionid"/>

<ClusterListener className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" />

 

参考资?br>       Apache Proxy Module    http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
       Apache Balancer Module       http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html
       Tomcat 5.5 Load Balancer     http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html
       Tomcat 5.5 Clustering/Session Replication   http://tomcat.apache.org/.../cluster-howto.html
       Apache Tomcat 5.5 Proxy     http://tomcat.apache.org/tomcat-5.5-doc/proxy-howto.html

Q全文完Q?
[补][推荐]Apache HTTP Server ?Tomcat 的三U连接方式介l??冬@IBM) http://www-128.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html

Xu Jianxiang 2007-04-23 16:56 发表评论
]]>
Struts FAQhttp://m.tkk7.com/anymobile/articles/98791.htmlXu JianxiangXu JianxiangThu, 08 Feb 2007 07:53:00 GMThttp://m.tkk7.com/anymobile/articles/98791.htmlhttp://m.tkk7.com/anymobile/comments/98791.htmlhttp://m.tkk7.com/anymobile/articles/98791.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/98791.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/98791.html

1/ 不支持嵌套标{?br />   如按钮的名称׃可以直接d配置Q另外标{默认值是在strutscM写死了,如submit?/p>

钮的默认值就?submit"
   <html:input name="keywords" values="<bean:message value="m_k">"/>

2/ radio按钮讄默认

   2.1/ 在form构造函C讄默认?br />   2.2/ 在form的resetҎ中设|默认?br />   2.3/ 使用js脚本讄默认?br /><script>
 document.all("sex")[0].checked=true;//W一个radio选中
</script>

3/ 配置资源文g

   3.1/ web.xml(from 1.1)
   3.2/ struts-config.xml(from 1.2)

   web.xml中的配置优先Q解军_配置文g的方法:别名bundle(since 1.2)Q徏议?.2?/p>

   a. web.xml

    < web-app >
     
< servlet >
       
< servlet-name > action </ servlet-name >
       
< servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >
       
< init-param >
         
< param-name > application </ param-name >
         
< param-value > org.anymobile.test.struts.ApplicationResources </ param-value >
       
</ init-param >
       
< init-param >
         
< param-name > config </ param-name >
         
< param-value > /WEB-INF/struts-config.xml </ param-value >
       
</ init-param >
        
     
</ servlet >
      
   
</ web-app >

   b. struts-config.xmlQ如果web.xml配置了资源文Ӟ可以加个资源文gQ内容ؓI?/p>

< message-resources  parameter ="org.anymobile.test.struts.ApplicationResources2"   />
< message-resources  key ="bundle2"  parameter ="org.anymobile.test.struts.ApplicationResources2"   />

   c. /org/anymobile/test/struts/ApplicationResources.properties

hello.message = Hello are you?

   d. java E序

ActionMessage err  =   new  ActionMessage(  " bundle2.hello.message "  );

   e. jsp E序

< bean:message bundle = " bundle2 "  key = " hello.message "   />
< html:errors bundle = " bundle2 " />

4/ ?gnujaxp.jar 冲突
   Tomcat启动报错QWeb面可以昄Q提交后Q?.do会报错?br />   使用JFreeChart开源Y件时Q只djcommon.jarQjfreechart.jar两个包?/p>

5/ checkbox
   private boolean syaken = true;(default true,false)
   <html:checkbox property="syaken"/>
   <input type="hidden" name="syaken" value="false">

   private String type;(default 0,1)
   <html:checkbox property="syaken"  value="1"/>



Xu Jianxiang 2007-02-08 15:53 发表评论
]]>
Hibernate FAQhttp://m.tkk7.com/anymobile/articles/98790.htmlXu JianxiangXu JianxiangThu, 08 Feb 2007 07:51:00 GMThttp://m.tkk7.com/anymobile/articles/98790.htmlhttp://m.tkk7.com/anymobile/comments/98790.htmlhttp://m.tkk7.com/anymobile/articles/98790.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/98790.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/98790.html1/ 数据库驱?/p>

   1.1/ Oracle
        jdbc驱动需要注意版本,class111.jarQo_jdbc.jar?br>   1.2/ MS SQL Server
        注意版本和网l配|(tcp和管道的权限Q?br>        官方驱动Q?000Q?个jar包;2005Q一个jar包?br>        jrds驱动Q评h遍比官方的好Q注意各个版本?br>   1.3/ MySQL

2/ 数据库连?session

   2.1/ hibernate.cfg.xml配置jdbc驱动
   2.2/ hibernate.cfg.xml配置datasource
   2.3/ 在获取session时加载Connection
        struts的datasource
        web server的datasource
        dbcp的datasource

3/ 事务Transaction ?commit
 
   一ơ事务只可以提交一ơ,多次提交会报错?br>   javax.servlet.ServletException: JDBC commit failed

4/ 一张表转换成了2个对象,修正Z个对?/p>

   4.1 修改*.hbm.xmlQ去除composite-id标签Q将主键对应的key-property改ؓidQ其它key-property改ؓpropertyQ?br>   4.2 删除*.java和Abstract*.javaQ将*Id.java和Abstract*Id.java分别重构?.java和Abstract*.javaQ?br>   4.3 修改*DAO.jarQ将findById的参C正ؓ主键的类型,注意?.hbm.xml匚w?br>
修改前:

< hibernate-mapping >
    
< class  name ="com.inc.xschool.entity.PositionInfo"  table ="POSITION_INFO"  schema ="dbo"  catalog ="xschool" >
        
< composite-id  name ="id"  class ="com.inc.xschool.entity.PositionInfoId" >
            
< key-property  name ="positionId"  type ="java.lang.Long" >
                
< column  name ="POSITION_ID"   />
            
</ key-property >
            
< key-property  name ="positionName"  type ="java.lang.String" >
                
< column  name ="POSITION_NAME"  length ="50"   />
            
</ key-property >
            
< key-property  name ="custId"  type ="java.lang.String" >
                
< column  name ="CUST_ID"  length ="50"   />
            
</ key-property >
        
</ composite-id >
    
</ class >
</ hibernate-mapping >

修改后:
<hibernate-mapping>
    
<class name="com.inc.xschool.entity.PositionInfo" table="POSITION_INFO" schema="dbo" catalog="xschool">
        
<id name="positionId" type="java.lang.Long">
            
<column name="POSITION_ID" precision="2" scale="0" />
            
<generator class="assigned"></generator>
        
</id>
        
<property name="positionName" type="java.lang.String">
            
<column name="POSITION_NAME" length="50" />
        
</property>
        
<property name="custId" type="java.lang.String">
            
<column name="CUST_ID" length="50" />
        
</property>
    
</class>
</hibernate-mapping>

5/ 递增字段Q整型)
   5.1 Oracle  <generator class="sequence">SEQ_NAME</generator>
   5.2 MySQL  <generator class="increment"/>
   5.3 SQL SERVER <generator class="identity"/>

6/ MS SQL SERVER Exception

6.1 [Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes
jdbc bug,text字段的DZI或''Q改? '卛_Q?005中也怿正此bug?/p>

6.2 [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.
在手工事务模?(AutoCommit=false) 下,如果使用直接 (SelectMethod=direct) 模式Q当您尝试对使用 JDBC 驱动E序?SQL Server 数据库执行多个语句时Q将会出现此问题。直接模式是该驱动程序的默认模式?
url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=whm;SelectMethod=cursor

6.3 [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
    com.microsoft.sqlserver.jdbc.SQLServerException: C?nbsp; ?TCP/IP q接p|?

客户端:10.170.10.2; WinXP SP2; SQL Server 2000(SP4)
服务端:10.170.10.3; Win2003 Server; SQL Server 2000(SP4)

1/ Microsoft SQL Server 2000 Driver for JDBC(Service Pack 1)
msbase.jar;mssqlserver.jar;msutil.jar

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url  = "jdbc:microsoft:sqlserver://10.170.10.3:1433;DatabaseName=xschool";

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
 at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
 at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
 at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
 at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
 at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
 at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
 at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
 at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
 at java.sql.DriverManager.getConnection(DriverManager.java:512)
 at java.sql.DriverManager.getConnection(DriverManager.java:171)
 at com.inc.xchool.test.TestJDBC.main(TestJDBC.java:31)

2/ Microsoft SQL Server 2005 JDBC Driver
sqljdbc.jar

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String url  = "jdbc:sqlserver://10.170.10.3:1433;DatabaseName=xschool";

com.microsoft.sqlserver.jdbc.SQLServerException: C?nbsp; ?TCP/IP q接p|?java.net.ConnectException: Connection timed out: connect
 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
 at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
 at java.sql.DriverManager.getConnection(DriverManager.java:512)
 at java.sql.DriverManager.getConnection(DriverManager.java:171)
 at com.inc.xchool.test.TestJDBC.main(TestJDBC.java:34)

3/ Win的数据源(ODBC)Q系lDSN
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
可以建立q接

解决ҎQ在10.3的防火墙讄中开?433的TCP权限?br>SQL SERVER TCP 1433

6.4 org.eclipse.core.internal.resources.ResourceException: A resource exists with a different case: /ok/hibernate.reveng.xml.
状况Q新Z2个web目Q一个叫okQ一个叫okadminQ都d了hibernate兌Q后者反转数据库l构的时候,eclipse?log中留下以上的log?br>解决ҎQ时remove另外一个项目?br>
6.5 ORA-01461 can bind a LONG value only for insert into a LONG column
状况QJDBC驱动与连接的Oracle数据库版本不一致?br>解决ҎQ置换JDBC驱动为Oraclepȝ自带的?/p>

Xu Jianxiang 2007-02-08 15:51 发表评论
]]>
ZStruts和Hibernate的轻量J2EE应用http://m.tkk7.com/anymobile/articles/91870.htmlXu JianxiangXu JianxiangThu, 04 Jan 2007 16:35:00 GMThttp://m.tkk7.com/anymobile/articles/91870.htmlhttp://m.tkk7.com/anymobile/comments/91870.htmlhttp://m.tkk7.com/anymobile/articles/91870.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/91870.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/91870.html

作者:徐徏( netpirate@gmail.com Q?/span>

旉Q?/span> 2007-01-03

|址Q?/span> http://www.anymobile.org

 

1?span style="FONT: 7pt 'Times New Roman'"> 目介绍

××××目是基于……(背景Q范_术语Q?/span>

2?span style="FONT: 7pt 'Times New Roman'"> pȝ设计

Z降低pȝ的耦合性,提高pȝ的实用性和灉|性,对系l的面逻辑、业务逻辑和数据逻辑q行分层。集合当前的 Web 技术,?/span> Java 环境下,采用实现?/span> MVC 模式?/span> Struts 和实C数据持久化的 Hibernate 的开源框架组合, ?/span> Hibernate 中整?/span> EhCache Q对数据q行~存?/span>

本系l的体系l构如下Q?/span>

其中Q应用表C层Z Struts 框架Q业务逻辑层包含了供应用程序调用的业务逻辑规则Q以帮助应用E序完成业务操作Q数据持久层Z Hibernate 框架Q采?DAOQ?/span>Data Access ObjectQ模式操作数据库Q?/span>应用服务器采?/span> Tomcat ?/span>

3?span style="FONT: 7pt 'Times New Roman'"> 详细设计

本系l具有多个模块,但各个模块的基本设计原理相同Q下面将逐个描述?/span>

…?/span>

4?span style="FONT: 7pt 'Times New Roman'"> 数据库设?/span>

…?/span>

5?span style="FONT: 7pt 'Times New Roman'"> 开发示?/span>

5.1 开发环?/span>

       WinXP

       JDK 1.4.2

       Eclipse 3.2.1 SDK

MyEclipse 5.0GA Q?/span> Struts 1.2 Q?/span> Hibernate 3.1 Q?/span>

Tomcat 5.5

5.2 新徏 Web Project

       File->New Project->MyEclipse->J2EE Projects->Web Project

5.3 建立 Struts

       MyEclipse->Add Struts Capabilities

5.4 建立数据库浏?/span>

       Window-> Preferences->MyEclipse->Database Explorer->New Driver

       Window->Customize Perspective->Commands Q选上 Profile

       Profile H口Q?/span> Connection it

5.5 建立 Hibernate

       MyEclipse->Add Hibernate Capabilities

5.6 配置应用服务?/span>

       Window-> Preferences-> Application Server->Tomcat 5 Q选择 Enable Q浏?/span> Tomcat 的安装目录,览 JDK 的安装目?/span>

       右键点击 Project Q?/span> MyEclipse-> Add and Remove Project Deployment Q点?/span> Add Q?/span> Server 选择 Tomcat 5 Q?/span> Finish ?/span>

点击 Run server Q切换到 Web Browser H口Q就可以讉K了?/span>

 

参考文?/span>

       Eclipse->Help->Help Contents->MyEclipseLearningCenter->J2EE Application Development->Getting Started->Struts Development

       Eclipse->Help->Help Contents->MyEclipseLearningCenter->Spring/Hibernate Development->Getting Started->Hibernate Development

       Struts-Hibernate-Integration-Tutorial http://www.laliluna.de/download/struts-hibernate-integration-tutorial-en.pdf

<全文?gt;

Xu Jianxiang 2007-01-05 00:35 发表评论
]]>
Contributing to EclipseQ?Q-QEclipse 插ghttp://m.tkk7.com/anymobile/articles/64934.htmlXu JianxiangXu JianxiangMon, 21 Aug 2006 17:38:00 GMThttp://m.tkk7.com/anymobile/articles/64934.htmlhttp://m.tkk7.com/anymobile/comments/64934.htmlhttp://m.tkk7.com/anymobile/articles/64934.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/64934.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/64934.html 1、Eclipse 法则(Eclipse Rule)

 

扩展? Extender) ――添加插?/span>

       贡献法则Q?/span> Contribution Rule Q:一切皆是A献?/span>

       遵@法则Q?/span> Conformance Rule Q:插g必须遵@预期的接口?/span>

       ׃n法则Q?/span> Sharing Rule Q:增加Q不要取代?/span>

       有样学样法则Q?/span> Monkey See/Monkey Do Rule Q:遇到问题Ӟ首先复制cM插g的结构?/span>

       相关性法则( Relevance Rule Q:只有在操作有可能成功时菜昄你所贡献的操作?/span>

       整合法则Q?/span> Integration Rule Q:要整合,不要分裂?/span>

       责Q法则Q?/span> Responsibility Rule Q:明确指出你所开发的插g旉题的源头?/span>

       针对 API 契约~程法则Q?/span> Program to API Contract Rule Q:首先?/span> Eclipse API 契约Q然后针对契U编E?/span>

       Other 法则Q?/span> Other Rule Q:让用户可以选择所有东西,但把那些通常不用于当前视角的选项攑֜ Other?/span> 对话框中?/span>

       IResource 适配法则Q?/span> Adapt to IResource Rule Q:应该量为领域对象定?/span> IResource 适配器?/span>

       分层法则Q?/span> Strata Rule Q:语a无关的功能与特定于具体语a的功能分开Q将核心性能?/span> UI 分开?/span>

       用户q诏性法则( User Continuity Rule Q:在多ơ会话之_应该保持 UI 状态一致?/span>

 

促成? Enabler  ) ――发布扩展点

       邀h则( Invitation Rule Q:可能的邀请别Zؓ你的作品作出贡献Q发布扩展点?/span>

       懒加载法则( Lazy Loading Rule Q:只有在真正需要的时候才加蝲插g?/span>

       安全q_法则Q?/span> Safe Platform Rule Q:作ؓ扩展点的提供者,你必M护好自己Q不要让扩展者的误操作给你造成损失?/span>

       公^竞争法则Q?/span> Fair Play Rule Q:所有用者遵守同L游戏规则Q包括我自己?/span>

       明确扩展法则Q?/span> Explicit Extension Rule Q:明确说明q_的什么地方可供扩展?/span>

       发散性法则( Diversity Rule Q:一个扩展点接纳多个扩展?/span>

       良好防M法则Q?/span> Good Fences Rule Q:如果要交出程序的控制权,首先保护好你自己?/span>

       用户军_法则Q?/span> User Arbitration Rule Q:如果有多个选择Q由用户军_使用哪一个?/span>

       明确 API 法则Q?/span> Explicit API Rule Q:?/span> API 与插件内部用的cd开?/span>

       E_性法则( Stability Rule Q:如果你已l开始邀请其它h作出贡献Q就不要再改变游戏规则?/span>

       保守 API 法则Q?/span> Defensive API Rule Q:只暴露你有信心的 API Q但同时也应该做好准备暴露更多的 API Q因Z用者会要求你这样做。(不含 internal 的包被认为是公开的、允许后l的扩展者用的Q不?/span> internal 的包Q则不是打算拿到插g外用的。)

 

发布? Publisher) ――发布插?/span>

       许可法则Q?/span> License Rule Q:每项贡献品都应该提供许可证?br />
2、Eclipse 插g(Plug-in)

何时需要一个插件类

 

       每个插g都由一个插件类来代表。插件类是一?/span>SingletonQ其中提供了一些钩子方法,可以Ҏ件的什么周期事件作出响应。可以在插gW一ơ加载时d所需的资源,也可以在插g停止时做必要的清理工资。另外,插gq负责提高一些共享信息?/span>

 

投媄Q?/span>ShadowQ的世界

 

       Eclipseq_启动时会所有插件清单文件读入一个插件注册表中,为每个插件创Z个投影。此时不会加载插件本w,只加载它们的描述信息。(Platform.getPluginRegistry()Q?/span>

 

开发插件时Q不要在目属性中修改构徏classpathQ始l在清单文g中修攏V?/span>

 

?/span>Eclipse中,每个插g都有自己的类加蝲器(class loaderQ和自己的类查找路径Q?/span>classpathQ,后者将l承该插件所导入的其它插件的classpath。当插g的类加蝲器加载插件的W一个类Ӟ׃Ȁz该插g?/span>

 

插gcd载器

 

1?span style="FONT: 7pt 'Times New Roman'">  插gcd载器的上U加载器Q?/span>Eclipse的引导加载器Q?/span>boot.jar

2?span style="FONT: 7pt 'Times New Roman'">  插g本n的类加蝲器,plugin.xml清单文g中的<run-time>元素中描q的cR?/span>

3?span style="FONT: 7pt 'Times New Roman'">  怾插g的类加蝲器,如果插g依赖于其它插Ӟ在类查找Ӟ会在内部使用一?/span>URLcd载器?/span>

4?span style="FONT: 7pt 'Times New Roman'">  不包括应用程序类/CLASSPATH变量的加载器?/span>

 

加蝲扩展的全q程

 

1?span style="FONT: 7pt 'Times New Roman'">  ?/span>Eclipseq_取得扩展炏V?/span>

2?span style="FONT: 7pt 'Times New Roman'">  取得以在此扩展点上注册的扩展Q实?/span>IExtension接口Q?/span>

3?span style="FONT: 7pt 'Times New Roman'">  对于每个扩展Q取出其中以XML方式声明的配|元素(实现IConfigurationElement接口Q?/span>

4?span style="FONT: 7pt 'Times New Roman'">  对于每个配置元素Q根据该元素XML声明?/span>class属性的值创Z个对象,保定义的属性完整、有效?/span>

5?span style="FONT: 7pt 'Times New Roman'">  新创徏的扩展对象保存到一个集合中Q而不是直接返回一个扩展对象?/span>

 

理想的开发策略:

1?span style="FONT: 7pt 'Times New Roman'">  信心Q在增加新性能或修Ҏl构Ӟ不比担心对原代码造成破坏?/span>

2?span style="FONT: 7pt 'Times New Roman'">  学习Q快速而自信地学习Eclipse地新领域?/span>

3?span style="FONT: 7pt 'Times New Roman'">  设计Q鼓p己和同事认真考虑设计Q尤其是代码地外在接口,然后去考虑如何实现?/span>

 

试驱动开发(Test-Driven Development, TDDQ的开发@环:

1?span style="FONT: 7pt 'Times New Roman'">  ~写Ʋ添加功能的试?/span>

2?span style="FONT: 7pt 'Times New Roman'">  针对q个试引用到、暂未存在的cdҎQ创ZD늩的占用程序,使测试通过~译?/span>

3?span style="FONT: 7pt 'Times New Roman'">  实现试Q测试测试应该失败?/span>

4?span style="FONT: 7pt 'Times New Roman'">  量对实C码加以清扫,例如去除其中的重复代码?/span>

 

插g的测试策?/span>

 

       从审的角度Q每个插件应该尽可能的依赖其它插gQ从实用的角度,以测试驱动的方式开发插件的每个部分。应该首先创建测试插Ӟ让它依赖于新插gQ以便完全用试来驱动新插g的开发?/span>

 

工作副本Q?/span>working copyQ是Eclipse JDT引入的一个概念,是原有的~译单元在内存中的复制品。让用户修改Ӟ操作的实际是Java~辑器所创徏的工作副本;当用户保存编译单元时Q?/span>Java~辑器才把副本提交到文gpȝQ此时对~译单元的修Ҏ会以Java元素变化增量的Ş式广播出厅R(JavaUI.getWorkingCopyManager()Q?/span>

 

视角Q定义了Q一l)视图和编辑器的排列方式,工作台页面的布局Q解x个完整问题的环境?/span>

 

降低插g的维护成本:良好的异常处理和错误报告机制Q提供联机帮助文档(Eclipse?/span>help扩展点的扩展Q?/span>

 

分段Q?/span>fragmentQ开发者能够向现有的插件中d代码和资源。(fragment.xmlQ?/span>

分段的用途:

1?span style="FONT: 7pt 'Times New Roman'">  为插件提供额外的字符串翻译(语言包)?/span>

2?span style="FONT: 7pt 'Times New Roman'">  为现有组件提供特定于q_的内宏V?/span>



Xu Jianxiang 2006-08-22 01:38 发表评论
]]>
Contributing to EclipseQ?Q-QEclipse SDKhttp://m.tkk7.com/anymobile/articles/64933.htmlXu JianxiangXu JianxiangMon, 21 Aug 2006 17:34:00 GMThttp://m.tkk7.com/anymobile/articles/64933.htmlhttp://m.tkk7.com/anymobile/comments/64933.htmlhttp://m.tkk7.com/anymobile/articles/64933.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/64933.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/64933.html Contributing to Eclipse

Principles,Patterns,and Plug-Ins

 

[ ?/span> ] Erich Gamma, Kent Beck ?/span>

    熊节 ?/span>

   

 

每个人都需要别人的兛_和帮助,每个Z同样需要关心和帮助别h?br />

每天?/span> 6 个小时读代码Q再用一个小时写代码?/span>

学习 Eclipse 的方法,览 org.eclipse.core.runtime 的源代码?/span>

 

全书分四个@环:

1?span style="FONT: 7pt 'Times New Roman'">  W零循环Q做好插件开发的准备Q然后以最快速度开发一个小插g――从构思到实现?/span>

2?span style="FONT: 7pt 'Times New Roman'">  W一循环Q介l插件的内容和测试用例,开发ƈ部v用于q行单元试的插件?/span>

3?span style="FONT: 7pt 'Times New Roman'">  W二循环Q在基本功能之外Qؓ插g加上一个完?/span> Eclipse 插g的所应该h的特性?/span>

4?span style="FONT: 7pt 'Times New Roman'">  W三循环Q纵?/span> Eclipse 的设计,着重之处其中值得早x的地斏V(设计模式及实玎ͼ


大家谈论的EclipseQ通常都是指的Eclipse Software Development kitQSDKQ,包括java integrated development environment QIDEQ和最好的ZEclipse q_的单一开发品的工具?br /> 

Eclipse SDK 是几个有影响的Eclipse目的集合体Q包括众多扩展点和符合相同接口的扩展?br />Eclipse IDE 搭徏了一个完全由lgl成的环境,q且始终保证快速启动?br />
Eclipse 的三层体pȝ构:

1?span style="FONT: 7pt 'Times New Roman'">  q_( Platform )Q定义了通用的、独立于~程语言的基设施?/span>

2?span style="FONT: 7pt 'Times New Roman'">  Java 开发工? Java Development Tools , JDT) Q基?/span> Eclipse Q功能齐备的 Java IDE ?/span>

3?span style="FONT: 7pt 'Times New Roman'">  插g开发环? Plug-in Development Environment  , PDE) Q对 JDT q行了扩展,提供了对插g开发的支持?/span>


Eclipse PlatformQ主要包括独立于用户界面的核? Core)层和UI(User Interface)层,以及 Team ?Help lg?br />

Figure 1 - Eclipse Platform architecture

1?span style="FONT: 7pt 'Times New Roman'">  q行? Runtime) Q定义了插g的基设施Q在启动时发现所有可用的插gQƈ负责理插g的加载?/span>

2?span style="FONT: 7pt 'Times New Roman'">  工作? Workspace) Q负责一个或多个目?/span>

3?span style="FONT: 7pt 'Times New Roman'">  标准H体lg工具? Standard Widget Toolkit , SWT) Q提供了囑Ş展示功能Qƈ定义了一l标准的H体lg?/span>

4?span style="FONT: 7pt 'Times New Roman'">  JFace Q一l较的 UI 框架Q徏立在 SWT 之上Q提供对常用 UI d的支持?/span>

5?span style="FONT: 7pt 'Times New Roman'">  工作? Workbench) Q定义了 Eclipse ?/span> UI 聚合体,其核心要素是~辑器、视囑֒视角?/span>

6?span style="FONT: 7pt 'Times New Roman'">  团队支持( Team Support )Q?/span> Eclipse q_允许 workspace 中的目建立在版本和配置理的团队知识库之上。^台含有扩展点和可以实现新的团队知识库插g的知识库供给 API 。多个团队知识库可以和^共存在^CQ?/span> Eclipse q_包含了对 CVS 的支持?/span>

7?span style="FONT: 7pt 'Times New Roman'">  帮助( Help)Q?/span>Eclipseq_的帮助机制允许定义和捐赠文档C个或多个在线手册的工兗比如,通过一个工h赠了帮助风格文的用h册,API文Q如果有多个Q捐赠给一个独立的~程指南?/span>


资源Q?br />
Eclipse Corner Articles              http://www.eclipse.org/articles/

Eclipse Platform Technical Overview  http://www.eclipse.org/articles/Whitepaper-Platform-3.1/eclipse-platform-whitepaper.html



Xu Jianxiang 2006-08-22 01:34 发表评论
]]>
Java与XMLQ?Q-QApache XMLBeanshttp://m.tkk7.com/anymobile/articles/63562.htmlXu JianxiangXu JianxiangMon, 14 Aug 2006 17:33:00 GMThttp://m.tkk7.com/anymobile/articles/63562.htmlhttp://m.tkk7.com/anymobile/comments/63562.htmlhttp://m.tkk7.com/anymobile/articles/63562.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/63562.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/63562.html 1?span style="FONT: 7pt 'Times New Roman'">  关于 XML

XML 是元标记语言Q?/span> XML 元素pv始标记、结束标记和二者之间的数据l成Q广泛运用于数据存储和交换?/span>

 

2?span style="FONT: 7pt 'Times New Roman'">  XMLBeans ?/span>

XMLBeans==XML+JavaBeans Q是一U?/span> XML-Java cdl定技术,提供了完整的 XML Schema ?/span> Infoset 支持。由 BEA 公司发明Q于 2003 q?/span> 9 月捐赠给 Apache 软g基金会的 XML 目l,目前的最新版本ؓ 2.2.0 ?/span>

XMLBeans 通过~译 XML Schema 文gQ把 XML 实例和底层架构映ؓ JavaBeans 风格的对象,开发h员通过 getter ?/span> setter 讉K器轻松检索、定位和操作 XML 数据文g?/span>

 

3?span style="FONT: 7pt 'Times New Roman'">  XMLBeans 操作步骤

3.1   准备 XML Schema 文g

XML Schema 文g是一?/span> XML 数据文g的约束文Ӟ它定义了 XML 文g的结构和元素Q以及对元素和结构的U束。二者相当于数据表结构与数据的关pR?/span>

XML Spy 可以通过 XML 文g生成 Schema 文gQ或者?/span> Workshop {Y件创建?/span>

3.2       利用 scomp 来生?/span> Java Classes

scomp ?/span> XMLBeans 提供的一个编译工P通过 schema 文g生成相应?/span> XML Bean cd元数据,在其安装目录下的 bin 目录下?/span>

scomp 命o的语法如下: scomp [opts] [dirs]* [schema.xsd]* [service.wsdl]* [config.xsdconfig]*

主要的参数说明:

-src [dir]       -- 生成?/span> Java 源码存放目录

-srconly        -- 只生?/span> Java 源码Q不~译、?/span> Jar 文g

-out [jarFileName]   -- 生成?/span> Jar 文gQ缺省是 xmltypes.jar

-compiler       -- Java ~译器的路径Q即 Javac 的位|?/span>

schema.xsd         -- XML Schema文g的\?/span>

config.xsdconfig     -- xsdconfig 文g的\?/span> , 主要用来制定生成?/span> Java Classes 的文件名规则?/span> Package 名称Q否?/span> package name schema ?/span> xmlns 为准?/span>

scomp  - src . / src  - out baiduweb.jar WebSearchSchema.xsd 

 

3.3       d XML 数据文g

生成的 jar 包添加到目?/span> libraries/classpath 中,新徏一?/span> java E序Q?/span>

3.4       ?/span> XML 数据文g

3.5       修改 XML 数据文g

3.6       删除 XML l点

3.7       查询 XML 数据

( 未完待箋 )

资源Q?br />Apache XMLBeans——XMLBeans官方|站
Configuring XMLBeans by Hetal Shah 2005-03-10
XMLBeans 2.0 —?一位Java开发h员的视点 by Jacob DannerRaj Alagumalai 2006-07-13
  了解Apache XMLBeans 2.0中的一些新Ҏ,包括XPath/Xquery集成以及Ҏ型的支持?/span>



Xu Jianxiang 2006-08-15 01:33 发表评论
]]>
Java与XMLQ?Q-QXML数据与解析器http://m.tkk7.com/anymobile/articles/57838.htmlXu JianxiangXu JianxiangWed, 12 Jul 2006 09:29:00 GMThttp://m.tkk7.com/anymobile/articles/57838.htmlhttp://m.tkk7.com/anymobile/comments/57838.htmlhttp://m.tkk7.com/anymobile/articles/57838.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/57838.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/57838.html

XML是原标记语言Q在Java中广泛应用于数据存储和交换?br />

1、配|文?/p>


1.1 Windows风格

文g名:config.properties

数据格式Q?/span>

[Product]
Name=秘书?br />
[IM] 
;  所有的文字在实际用中都会q行相应替换,替换规则如下:
;  $peeruin$ ---> 替换为对方的uin  

;  AllInOne在线
Text0=$peernick$开通了秘书自动应{服?是否与其[link=open peeruin=$peeruin$ selfuin=$selfuin$ from=6]秘书[/link]聊聊?

讉K方式Q?/span> Product.Name

如: QQ

 

1.2 OO风格

文g名:
config.xml

数据格式Q?/span>

<? xml version="1.0" encoding="UTF-8" ?>

< prop >
    
< product >
        
< name > value </ name >
   
</ product >
</ prop >

讉K方式Q?/span> product.name

如: Jive

2、XML解析?br />
2.1 DOM

DOM 是用与^台和语言无关的方式表C?XML 文档的官?W3C 标准。DOM 是以层次l构l织的节Ҏ信息片断的集合,允许开发h员在树中L特定信息。分析该l构通常需要加载整个文和构造层ơ结构。由于它是基于信息层ơ的Q因?DOM 被认为是Z树或Z对象的?br />
?DOM 解析模型的优Ҏ~程ҎQ可以很Ҏ的添加和修改树中的元素。然而由于?DOM 解析器的时候需要处理整?XML 文Q所以对性能和内存的要求比较高,其是遇到很大的 XML 文g的时候。由于它的遍历能力,DOM 解析器常用于 XML 文档需要频J的改变的服务中?br />
2.2 SAX

SAX 解析器采用了Z事g的模型,它在解析 XML 文的时候可以触发一pd的事Ӟ当发现给定的tag的时候,它可以激zM个回调方法,告诉该方法制定的标签已经扑ֈ。只是在d数据时检查数据,不需要将数据存储在内存中Q对内存的要求通常会比较低。但?SAX 解析器的时候编码工作会比较困难Q而且很难同时讉K同一个文中的多处不同数据?br />
2.3 JDOM

JDOM 自n不包含解析器Q它通常使用 SAX2 解析器来解析和验证输?XML 文?br />JDOM 的目的是成ؓ Java 特定文档模型Q仅使用具体c而不使用接口QAPI 大量使用?Collections c,化了?XML 的交互,q且比?DOM 实现更快?br />
2.4 DOM4J

DOM4J 合ƈ了许多超出基?XML 文表示的功能,包括集成?XPath 支持、XML Schema 支持以及用于大文或化文的基于事件的处理。它q提供了构徏文表示的选项Q它通过 DOM4J API 和标?DOM 接口hq行讉K功能?/p>

DOM4J 是一个非帔R怼U的Java XML APIQ具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的Y件?br />
3、DTD vs. XML Schema

XML Schema 指定 XML Schema 定义语言Q该语言提供了描q?XML 1.0 文档l构和限制其内容的工P其中包括那些利用 XML Namespace 的工兗模式语a自n?XML 1.0 表示q用名U空_它在很大E度上重构了 XML 1.0 DTD h的能力,q在一定程度上扩展了这些能力?br />


DTD 的局限?
  
?对于复杂需求通常很难使用内容模型?br />?不支持名U空间?br />?Ҏ块化和重用的支持非常有限?br />?不支持对声明扩展或ѝ?br />?~写、维护和d大型 DTD 以及定义pd相关模式都很困难?br />?没有嵌入式、结构化自我文档~制(self-documentation)(只有 可用)?br />?内容和属性声明不能依靠属性或元素上下?许多 XML 语言用到q一点,但它们的 DTD 必须“允许过多东襎??br />?只能使用一个简单的标识属性机?换句话说Q没有唯一性作用域)?br />  
XML Schema 的局限?
  
?XML Schema 比较复杂;只需要偶?XML 的程序员可能觉得它难得有些过头?br />?XML Schema 不能h特定的根元素(因此Q即佉K证最单的文也要求额外的信息)?br />?当描q؜合内ҎQ根本无法约束字W数据?br />?内容和属性声明不能依靠属性或元素上下?q也?DTD 的主要问??br />?不能d声明指定~省倹{?br />?元素~省值只能是字符数据(不包含标??br />



Xu Jianxiang 2006-07-12 17:29 发表评论
]]>
Java NIO 开源项?/title><link>http://m.tkk7.com/anymobile/articles/55987.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Fri, 30 Jun 2006 08:51:00 GMT</pubDate><guid>http://m.tkk7.com/anymobile/articles/55987.html</guid><wfw:comment>http://m.tkk7.com/anymobile/comments/55987.html</wfw:comment><comments>http://m.tkk7.com/anymobile/articles/55987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/anymobile/comments/commentRss/55987.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/anymobile/services/trackbacks/55987.html</trackback:ping><description><![CDATA[<li><a >Apache MINA</a> <p>Apache <abbr title="Multipurpose Infrastructure for Network Applications">MINA</abbr> is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract · event-driven · asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO.</p> <p>Apache MINA is often called:</p> <ul> <li>NIO framework · library, <li>client · server framework · library, or <li>a networking · socket library. </li> </ul> </li> <p>--updated 2008/03/12</p> <li><a ><font color="#666666"><strong>Raining Sockets</strong> </font></a>- Raining Sockets is a non-blocking sockets framework which eases the job of creating a highly scalable application that can receive and send over 10000 socket connections. The SocketBlaster (NIO based Load Tester) and Server (very basic NIO Server) program (both extended from NioSocket.java) have been successfully tested with 13000 connections on 2 Xeon machines. The Raining HTTP Server is an NIO based HTTP Server that aims at implementing most of HTTP 1.1 <br /> <br /> <li><a ><strong><font color="#666666">Reattore</font> </strong></a>- Reattore is a simple single threaded HTTP server written in Java. Unlike most Java server applications, Reattore uses the socket channel features added in Java 1.4 to serve all requests from one thread, instead of spawning each request off to a new thread. In theory this provides better performance and allows the system to degrade well under high load. <br /> <br /> <li><a ><strong><font color="#666666">UberMQ</font> </strong></a>- UberMQ is a clean room implementation of the Java Message Service specification. JMS is a part of the Java 2 Enterprise Edition. We wrote UberMQ because many of the established JMS vendors have turned their back on the core tenets of distributed computing: fast and simple. Our technology is implemented with Java NIO, allowing you to scale your message traffic without thousands of threads and the associated performance penalties. <br /> <br /> <li><a ><strong><font color="#666666">EIO</font> </strong></a>- The EIO package (which stands for "Event Input/Output") offers a networking API in Java that is efficient and very simple. This provides a third alternative to the two two major Java networking APIs: the traditional one-thread-per-connection model (java.net), and the new non-blocking model (java.nio). EIO provides a simplified wrapper around java.nio. <br /> <br /> <li><a ><font color="#666666"><strong>Mule</strong> </font></a>- Mule is a light-weight, event-driven component technology. It is highly scalable, using ideas from SEDA.<br /> <br /> <li><a ><strong><font color="#666666">EmberIO</font> </strong></a>- EmberIO is an I/O event system centered around Java 1.4 NIO. Supports both request-process-response models and many asynchronous models. Configurable thread pooling mechanisms and event processing models.<br /> <br /> <li><a ><font color="#666666"><strong>Bamboo DHT</strong> </font></a>- A distributed hash table, or DHT, is a building block for peer-to-peer applications. At the most basic level, it allows a group of distributed hosts to collectively manage a mapping from keys to data values, without any fixed hierarchy, and with very little human assistance. This building block can then be used to ease the implementation of a diverse variety of peer-to-peer applications such as file sharing services, DNS replacements, web caches, etc. <br /> <br /> <li><a ><font color="#666666"><strong>JicarillaHTTP</strong> </font></a>- A componentized, scriptable, event-based webserver, based on the JDK 1.4 New I/O (nio) package. <br /> <br /> <li><a ><strong><font color="#666666">NBServer</font> </strong></a>- A framework that takes most of the pain out of writing non-blocking network servers in Java 1.4. It'll shield you from low-level details of output buffering, selector management etc. leaving you to concentrate solely on writing the network protocol. <br /> <br /> <li><a ><font color="#666666"><strong>JADE Stuct/Union</strong> </font></a>- JavaTM classes for direct interoperability with C/C++ applications. Base classes analogous to C/C++ struct & union (same storage layout, alignment rules, bit-field support, etc.) Memory sharing between Java applications and native libraries. Direct encoding/decoding of streams for which the structure is defined by legacy C/C++ code. Serialization/deserialization of Java objects (complete control, e.g. no class header). Mapping of Java objects to physical addresses (with JNI). <br /> <br /> <li><a ><strong><font color="#666666">Kowari</font> </strong></a>- The storage engine of Kowari is a transactional triplestore known as the XA Triplestore. ll relevant fields of in-memory and on-disk data structures are 64 bits wide. System crashes caused by power failures and some types of hardware fault will not cause data corruption. The on-disk data structures of the triplestore are designed to be kept in a consistent state at all times while minimizing the overhead required to achieve this. NIO file channels allow multiple threads to concurrently read and write different parts of the same file without having to use thread synchronization to protect the current file position. On 32 bit platforms the amount of virtual memory that is available for mapping files is usually limited to less than 2 GB. <br /> <br /> <li><a ><strong><font color="#666666">Netty2</font> </strong></a>- Netty 2 provides an easy event-based API (like Swing) to develop high-performance, maintainable TCP/IP server/client application. Netty handles many essential features such as readiness selection, thread pooling, and buffer reuse which are required to build high- performance and capacity network applications. </li> <img src ="http://m.tkk7.com/anymobile/aggbug/55987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/anymobile/" target="_blank">Xu Jianxiang</a> 2006-06-30 16:51 <a href="http://m.tkk7.com/anymobile/articles/55987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Cache 开源项?/title><link>http://m.tkk7.com/anymobile/articles/55186.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 26 Jun 2006 09:17:00 GMT</pubDate><guid>http://m.tkk7.com/anymobile/articles/55186.html</guid><wfw:comment>http://m.tkk7.com/anymobile/comments/55186.html</wfw:comment><comments>http://m.tkk7.com/anymobile/articles/55186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/anymobile/comments/commentRss/55186.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/anymobile/services/trackbacks/55186.html</trackback:ping><description><![CDATA[ <p> </p> <p> <strong>Java Caching System</strong> <br />  JCS(Java Caching System)是一个用分布式的~存pȝQ是Z服务器的java应用E序。它是通过提供理各种动态缓存数据来加速动态web应用?<br />  JCS和其他缓存系l一P也是一个用于高速读取,低速写入的应用E序?<br />  动态内容和报表pȝ能够获得更好的性能?<br />  如果一个网站,有重复的|站l构Q用间歇性更新方式的数据库(而不是连l不断的更新数据库)Q被重复搜烦出相同结果的Q就能够通过执行~存方式改进其性能和׾~性?<br />官方|站 <a >http://jakarta.apache.org/turbine/jcs/</a></p> <p> <strong>EHCache </strong> <br />  EHCache 是一个纯java的分布式~存Q支持磁盘存储,它具有以下特性:快速,单,为Hibernate2.1充当可插入的~存Q最的依赖性,全面的文和试?<br />官方|站 <a >http://ehcache.sourceforge.net/</a></p> <p> <strong>OSCache</strong> <br />  OSCache是一个广泛采用的高性能的J2EE~存框架QOSCache能用于Q何Java应用E序的普通的~存解决Ҏ?<br />  OSCache有以下特点: <br />  ~存M对象Q你可以不受限制的缓存部分jsp面或HTTPhQQ何java对象都可以缓存?<br />  拥有全面的API--OSCache APIl你全面的程序来控制所有的OSCacheҎ?<br />  怹~存--~存能随意的写入盘Q因此允许昂늚创徏Qexpensive-to-createQ数据来保持~存Q甚臌让应用重启?<br />支持集群--集群~存数据能被单个的进行参数配|,不需要修改代码?<br />~存记录的过?-你可以有最大限度的控制~存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时Q?<br />官方|站 <a >http://www.opensymphony.com/oscache/</a></p> <p> <strong>Cache4J</strong> <strong> </strong> </p> <p>  Cache4J是一个接口简单,可以快速上手,ZBSD许可的开源缓存Y件?br />  Cache4J有以下特点:<br />  暂只只是内存~存Q?br />  多线E环境设计;<br />  2U实玎ͼsynchronized, blockingQ?br />  支持LFU, LRU, FIFO法?br />  支持盘存储Q分布式引用Q以及LFU2, LRU2{算法将是Cache4J接下来要实现的功能;另外Q该软g的用指南和API文均是俄文?br />官方|站Q?a >http://cache4j.sourceforge.net/</a></p> <p> <strong>JCache(FKache)</strong> <br />  JCache是个开源程序,正在努力成ؓJSR-107开源规范,JSR-107规范已经很多q没改变了。这个版本仍然是构徏在最初的功能定义上?<br />官方|站 <a >http://jcache.sourceforge.net/</a></p> <p> <strong>ShiftOne</strong> <br />  ShiftOne Java Object Cache是一个执行一pd严格的对象缓存策略的JavalibQ就像一个轻量的配|缓存工作状态的框架?<br />官方|站 <a >http://jocache.sourceforge.net/</a></p> <p> <strong>SwarmCache</strong> <br />  SwarmCache是一个简单且有效的分布式~存Q它使用IP multicast与同一个局域网的其他主行通讯Q是特别为集和数据驱动web应用E序而设计的。SwarmCache能够让典型的L作大大超q写操作的这cd用提供更好的性能支持     SwarmCache使用JavaGroups来管理从属关pd分布式缓存的通讯?<br />官方|站 <a >http://swarmcache.sourceforge.net</a></p> <p> <strong>TreeCache / JBossCache</strong> <br />  JBossCache是一个复制的事务处理~存Q它允许你缓存企业应用数据来更好的改善性能。缓存数据被自动复制Q让你轻松进行JBoss服务器之间的集群工作。JBossCache能够通过JBoss应用服务或其他J2EE容器来运行一个MBean服务Q当Ӟ它也能独立运行?<br />  JBossCache包括两个模块QTreeCache和TreeCacheAOP?<br />  TreeCache --是一个树形结构复制的事务处理~存?<br />  TreeCacheAOP --是一个“面向对象”缓存,它用AOP来动态管理POJO(Plain Old Java Objects) <br />  注:AOP是OOP的gl,是Aspect Oriented Programming的羃写,意思是面向斚w~程?<br />官方|站 <a >http://www.jboss.org/products/jbosscache</a></p> <p> <strong>WhirlyCache</strong> <br />  Whirlycache是一个快速的、可配置的、存在于内存中的对象的缓存。它能够通过~存对象来加快网站或应用E序的速度Q否则就必须通过查询数据库或其他代h较高的处理程序来建立?<br />官方|站 <a >https://whirlycache.dev.java.net/</a><br /><br /><strong>Jive Cache</strong><br />  Jive论坛曄是一个广受欢q的开放源码的论坛目Q现在已l商业化了,它有很多值得我们学习的地斏Vjive 2.6.0 的缓存机Ӟ把所要缓存的对象加到HashMap哈希映射表中Q用两个LinkedListedlist双向链表分别l持着~存对象和每个缓存对象的生命周期Q如果一个缓存对象被讉K刎ͼ那么把它放到链表的最前面Q然后不定时的把要缓存对象的对象加入链表中,把过期对象删除,如此反复?br />官方|站 <a >http://www.jivesoftware.com</a><br /><br /><strong>OFBiz Cache</strong><br /><span id="bvxflnr" class="style7">  OFBiz是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构徏大中型企业、跨q_、跨数据库、跨应用服务器的多层、分布式电子商务cWEB应用pȝ的框架?OFBiz最主要的特ҎOFBiz提供了一整套的开发基于Java的web应用E序的组件和工具。包括实体引? 服务引擎, 消息引擎, 工作引? 规则引擎{。Ofbiz与Jive实现的CachecMQ只是Ofbiz中根本都不关心每个对象的SizeQ只兛_M的HashMap的SizeQJiveZ实现双向联表Q而在Ofbiz中用的是java.util.LinkedList?br />官方|站 <a >http://www.ofbiz.org/</a></span></p> <p> <span id="zlvvdhj" class="style7">附:</span>cache4j_perfomance_tester?span class="style7">几个常用Cache的性能试报告Q?br /></span></p> <pre> [java] ---------------------------------------------------------------<br /> [java] java.version=1.4.2_09<br /> [java] java.vm.name=Java HotSpot(TM) Client VM<br /> [java] java.vm.version=1.4.2-54<br /> [java] java.vm.info=mixed mode<br /> [java] java.vm.vendor="Apple Computer, Inc."<br /> [java] os.name=Mac OS X<br /> [java] os.version=10.4.5<br /> [java] os.arch=ppc<br /> [java] ---------------------------------------------------------------<br /> [java] This test can take about 5-10 minutes. Please wait ...<br /> [java] ---------------------------------------------------------------<br /> [java] |GetPutRemoveT |GetPutRemove |Get |<br /> [java] ---------------------------------------------------------------<br /> [java] cache4j 0.4 |9410 |9053 |5865 |<br /> [java] oscache 2.2 |28076 |30833 |8031 |<br /> [java] ehcache 1.2 |8753 |7072 |3479 |<br /> [java] jcs 1.2.7.0 |8806 |9522 |4097 |<br /> [java] ---------------------------------------------------------------</pre> <img src ="http://m.tkk7.com/anymobile/aggbug/55186.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/anymobile/" target="_blank">Xu Jianxiang</a> 2006-06-26 17:17 <a href="http://m.tkk7.com/anymobile/articles/55186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置ApacheQ支持WAP OTAhttp://m.tkk7.com/anymobile/articles/46103.htmlXu JianxiangXu JianxiangSun, 14 May 2006 11:10:00 GMThttp://m.tkk7.com/anymobile/articles/46103.htmlhttp://m.tkk7.com/anymobile/comments/46103.htmlhttp://m.tkk7.com/anymobile/articles/46103.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/46103.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/46103.html

作者:徐徏(netpirate@gmail.comQ?/span>

旉Q?/span> 2004/12/15
来自Q?a >http://www.anymobile.org


Apache 是一个优U的应用服务器E序Q已l提供了?strong>一?/strong>WAP的支持?

如果你不定你的Apache是否配置好了WAP支持Q可以看一下Apache的配|文?mime.types"。如果配|文件中q么一行:

text/vnd.wap.wml                                      wml

如果没有的话Q也不用着急,加上q一行就行了。如果你要配|全面一些的话还要加上以下几行:

image/vnd.wap.wbmp                                 wbmp
text/vnd.wap.wmls                                     wmls
application/vnd.wap.wmlc                           wmlc
application/vnd.wap.wmlscriptc                   wmlsc
text/vnd.wap.wmlscript                              wsc
text/vnd.wap.wmlscript                              wmlscript

修改好以后,重新启动Apache可以了?/p>

如果要系l支持index.wml的话Q还得配|Apache的httpd.confQ类似添加index.php的配|了Q略?/p>

只所以说支持的是一般WAPQ像一些安装文件jarQjadQsis之类的安装文件就没有默认支持?/p>

如果要Apache支持OTAQWAP PUSHQ下载的话,q得在mime.types中添加下面几行:

AddType image/vnd.nokia.ota-bitmap ota
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType application/vnd.Nokie.ringing-tone rng
AddType application/vnd.symbian.install sis

Q不加的话,下蝲cMsis的安装文件会直接打开该文Ӟ而不会直接执行。)

更详l的文gcd配置如下Q?br />AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml
AddType audio/amr amr
AddType audio/midi mid
AddType audio/midi midi
AddType application/vnd.Nokie.ringing-tone rng
AddType application/vnd.symbian.install sis
AddType application/vnd.wap.wmlc wmlc
AddType text/vnd.wap.wmlscript wmls
AddType text/vnd.wap.wmlscript wmlsc
AddType application/vnd.wap.sic sic
AddType text/vnd.wap.si si
AddType text/vnd.wap.sl sl
AddType application/vnd.wap.slc slc
AddType text/x-vCalendar vcs
AddType text/v-vCard vcf
AddType application/vnd.nokia.gamedata nqd
AddType application/x-nokiagamedata ngd
AddType image/vnd.wap.wmbp wbmp
AddType image/x-bmp bmp
AddType image/x-epoc-mbm mbm
AddType image/vnd.nok-3dscreensaver n3a
AddType text/x-co-desc cod
AddType image/vnd.nok-oplogo-colornokia-op-logo nok
AddType application/x-pmd .pmd
AddType audio/vnd.qcelp .qcp
AddType application/x-smaf .mmf
AddType application/vnd.smaf

保存后,重启ApacheQOKQ?/p>

Xu Jianxiang 2006-05-14 19:10 发表评论
]]>
使用Axislg构徏SOAP服务http://m.tkk7.com/anymobile/articles/46102.htmlXu JianxiangXu JianxiangSun, 14 May 2006 11:07:00 GMThttp://m.tkk7.com/anymobile/articles/46102.htmlhttp://m.tkk7.com/anymobile/comments/46102.htmlhttp://m.tkk7.com/anymobile/articles/46102.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/46102.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/46102.html

作者:徐徏(netpirate@gmail.comQ?/span>

旉Q?/span> 2004/09/03

来自Qhttp://www.anymobile.org

soap 应用l构图:


1、安装App Server
     Tomcat/JRun...
2、安?解压Axislg/?/div>
     TomcatQ将Axis解压到webapps?/div>
     JRunQ将Axis随便解压到某个目录下Q然后将Axis发布成Server的一个Web Application
3?font face="宋体">http://localhost:8080/axis/ 可以正常讉K了吧
   http://localhost:8080/axis/services/ 发现了几个?按照提示到google上搜了下载,^_^
jaf-1_0_2.zip
See http://java.sun.com/products/javabeans/glasgow/jaf.html
javamail1_1_3.zip
See http://xml.apache.org/security/
jaxrpc.jar and saaj.jar 。。?。。?/div>
4、在Axis上添加个Service
a. {Axis}/WEB-INF/deploy.wsddQ?/div>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" 
    xmlns:java
="http://xml.apache.org/axis/wsdd/providers/java">
  
<service name="PhoenixService" provider="java:RPC">
    
<parameter name="className" value="com.newpalm.phoenixservice.PhoenixService" />
    
<parameter name="allowedMethods" value="*" />
  
</service>
b. {Axis}/WEB-INF/server-config.wsdd
<service name="PhoenixService" provider="java:RPC">
  
<parameter name="allowedMethods" value="*"/>
  
<parameter name="className" value="com.newpalm.phoenixservice.PhoenixService"/>
 
</service>
c. 讉Khttp://localhost:8080/axis/services/PhoenixService?wsdlQ?font color="#000000">看到什么了Q嗬?/font>
5、如果PhoenixService.java中有个简单的helloҎQ返回一个字?/div>
讉Khttp://localhost:8080/axis/services/PhoenixService?method=hello&chm=Jane Q正?/div>
嗬嗬Q这时候就需要创Z个SOAP Client试用了
6、用JBuilder9创徏SOAP ClientQ?/div>
new->web services->import a web service
输入上面的wsdl地址Q一路next卛_。看看PhoenixServiceServiceTestCase.java的mainҎ?/div>
Q注Q以PhoenixServiceZQ?/div>
7、可能你准备传输的是一个对象,q时候就要用到新的配|和对象序列化(implements java.io.SerializableQ,如:
 
<typeMapping 
  
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" 
  encodingStyle
=http://schemas.xmlsoap.org/soap/encoding/ 
  
qname="ns1:Memo" 
  serializer
="org.apache.axis.encoding.ser.BeanSerializerFactory" 
  type
="java:com.newpalm.phoenixservice.Theme" 
  xmlns:ns1
="phoenixservice.newpalm.com"
/>

public class Theme implements java.io.Serializable
{}

8?/font>
SOAP数据接口搞定Q?/font>


Xu Jianxiang 2006-05-14 19:07 发表评论
]]>SVN(Subversion)Q-源码版本控制工具http://m.tkk7.com/anymobile/articles/34393.htmlXu JianxiangXu JianxiangWed, 08 Mar 2006 16:57:00 GMThttp://m.tkk7.com/anymobile/articles/34393.htmlhttp://m.tkk7.com/anymobile/comments/34393.htmlhttp://m.tkk7.com/anymobile/articles/34393.html#Feedback0http://m.tkk7.com/anymobile/comments/commentRss/34393.htmlhttp://m.tkk7.com/anymobile/services/trackbacks/34393.html

SVN(Subversion)Q-源码版本控制工具


作者:徐徏(netpirate@gmail.comQ?BR>旉Q?/SPAN>2006/03/09

来自Qhttp://www.anymobile.org

1、何谓SVN ..........................................................................1
2、安装用TortoiseSVN ...........................................................1
3、Eclipse的SVN 插gQSubclipse ...............................................2

1
?/SPAN>何谓 SVN

SVN (Subversion)Q是开源的源码版本控制的工P是CVS的极L争力的替代品。它支持CVS所~少的一些重要特性,比如版本化的重命名、目录和元数据,q支持原子提交和通过HTTP/HTTPS的远E访问。越来越多的开源项目用SVN来控制版本,Project JClaim 是q样的开源Y件?BR>
2、安装?TortoiseSVN

安装SVN 客户端Y?TortoiseSVN 1.3.2Q支持中文:

1、从TortoiseSVN|站(http://tortoisesvn.sourceforge.net/)下蝲安装E序Q?BR>2、安装到本地Qƈ重启pȝQ?BR>3、右键点L个文件夹Q就可以看到如下的菜单;


4、选择check out后出现选择框,?JClaim ZQ输入svn地址https://svn.sourceforge.net/svnroot/jclaim 和本地存储地址Q?BR>

5、项目文件全部取出后Q可以看到目录名的图标全部变了;


SVN 中导出和取出的区别:
导出(export)Q只是把在SVN服务器上的源码复制一份,没有.svn文g夏V适用于发表源码包?BR>取出(checkout)Q是从SVN服务器把源码复制到本地机器上创徏一份工作版本,目录内有.svn文g夹,见上图?BR>
6、右键点击check out后的文g夹,右键菜单换成了Update ?Commit?BR>

关于SVN的导入源码等操作Q请参考下面这来?openology.org 文章Q?BR>在windows下运用Subversion(SVN)服务?http://openology.org/blog/blogs/index.php/kc/2005/04/16/a_uwindowsac_ei_c_usubversion_svn_a_a_ia

3、Eclipse?SVN 插gQSubclipse

Subclipse是Eclipse IDE的SVN插gQ安装步骤如下:

打开 Eclipse?Help -> Software Updates -> Find and Install... 菜单下,选择SearchQ查到要安装的新Ҏ,q以 http://subclipse.tigris.org/update 作ؓURLdNew Remote siteQ一路Next卛_完成安装?BR>
其它配置Q暂略?BR>
资源Q?BR>
SVG.org http://subversion.tigris.org/

TortoiseSVN 1.3.2 http://tortoisesvn.sourceforge.net/
Subversion (Version Control for Source Code) http://sourceforge.net/docs/E09



Xu Jianxiang 2006-03-09 00:57 发表评论
]]>
վ֩ģ壺 ĻŮһ| Ļ߹ۿձ| йһȫƵѹۿ| Ȼר| ޴ɫAvר| ޹Ʒ߹ۿ97| ˳߹ۿƵ| ۺۺͼ| ޳AV߲| av뾫ƷƷ| ѵӾ߹ۿ| ҹѸվ| Ļַ| ĻѾþӰԺ| ޹徫Ʒ߾þ| Ƶ߲| һ߹ۿ| ձѲ| Ʒ| Ļ2019| 7x7x7x߹ۿ| ƬAVƬѹۿ| aëƬƵ| ɫˬŮС˵ѿ| ӰԺ߹ۿ| ޹Ʒһһҳ| ާѡþþþƷ| ޾ƷƵ| ޳avƬ߹ۿ벻| ޹徫Ʒ߾þ| ޸Ʒһ| שש| ŷۺϾþþ| ƵƷһ| һƬѿ| ֻ߿avƬ| ձһ| AVһDV| Ʒ޹| һѻɫƬ| 91㽶߹ۿ|