??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品一区二区三区久久,91精品国产亚洲爽啪在线观看,亚洲精品无码成人片久久不卡http://www.tkk7.com/sgsoft/category/11.htmlJAVA?/description>zh-cnTue, 27 Feb 2007 08:49:19 GMTTue, 27 Feb 2007 08:49:19 GMT60l述 Apache web server 的安装与配置 http://www.tkk7.com/sgsoft/articles/2380.html天一?/dc:creator>天一?/author>Wed, 23 Mar 2005 09:28:00 GMThttp://www.tkk7.com/sgsoft/articles/2380.htmlhttp://www.tkk7.com/sgsoft/comments/2380.htmlhttp://www.tkk7.com/sgsoft/articles/2380.html#Feedback0http://www.tkk7.com/sgsoft/comments/commentRss/2380.htmlhttp://www.tkk7.com/sgsoft/services/trackbacks/2380.html
Apache web server是一Ƒּ放源码的web服务器YӞ由apache software foundation 开发和l护的。它是目前世界上使用最为广泛的web服务器YӞ支持各种unixq_和windowsq_。本文将介绍它在Red hat Linux 9中最基本的安装和配置?BR>
二、Y件的相关资源

官方|站Qhttp://httpd.apache.org/
源码软g包:(x)Apache 是开源的软gQ可以去其官方网站http://httpd.apache.org/download.cgi下蝲。目前的最新稳定版本是httpd-2.0.53?BR>帮助文档Qhttp://httpd.apache.org/docs-project/ 有该软g比较全面的帮助文档?BR>FAQQhttp://httpd.apache.org/docs/misc/FAQ.html 回答了该软g的常见问题?BR>?软g的安?BR>
1.安装

由其官方|站中下载其源码软g包httpd-2.0.53.tar.gz。接下来我将对安装过E的一些重要步骤,l出其解释:(x)

[root@localhost root]#tar xzvf httpd-2.0.53.tar.gz
[root@localhost root]#cd httpd-2.0.53
[root@localhost httpd-2.0.53]#./configure
[root@localhost httpd-2.0.53]#make
[root@localhost httpd-2.0.53]#make install


tar xzvf httpd-2.0.53.tar.gz 解压~Y件包?

./configure 针对机器作安装的查和讄Q大部分的工作是由机器自动完成的Q但是用户可以通过一些参数来完成一定的讄Q其常用选项有:(x)

./configure --help 察看参数讄帮助?

--prefix= 指定软g安装目录Q默?usr/local/apache2Q?

--enable-modules= 指定需要加载的模块?

--enable-v4-mapped 支持ipv6的socket处理ipv4的连接?

可以讄的参数很多,可以通过 -help察看需要的Q一般情况下Q默认设|就可以了?

默认安装建立?usr/local/apache2目录Q下面介l一?usr/local/apache2的几个常用组成部分:(x)

/usr/local/apache2/bin 其中主要是有服务器的E序。常用的有deamonE序httpdQ和控制脚本apachectl?

/usr/local/apache2/conf 其中主要是服务器相关的配|文件。最主要的配|文件是httpd.conf?

/usr/local/apache2/htdocs 默认的网站html文g根目录?

/usr/local/apache2/cgi-bin 默认的cgiE序的存攄录?

2.启动Q?

[root@localhost root]# /usr/local/apache2/bin/apachectl start
[root@localhost root]# ps aux 
[root@localhost root]# netstat -an


如果不出什么问题,ps aux 应该可以查到httpd 的进E,或netstat -an 也可以看?0端口的服务已lv来了。如果要讄开启动web serverQ只需?etc/rc.d/rc.local中加入一?

/usr/local/apache2/bin/apachectl start

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local

/usr/local/apache2/bin/apachectl start

四、Y件的配置?BR>
/usr/local/apache2/conf/httpd.conf 默认安装Q所有的配置都有光认|接下来我介绍介绍一些常用的配置:(x)









# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80

Listen 80


讑֮apache 的侦听地址和端口?

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed.  This address appears on some server-generated pages, such
# as error documents.  e.g. admin@your-domain.com
#
ServerAdmin you@example.com


讑֮apache 的管理员邮g地址?

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/apache2/htdocs"


讑֮apache web server 的文档根目录Q必Ll对路径?

<Directory "/usr/local/apache2/htdocs">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>


讑֮文档根目录的权限控制Q必dDocumentRoot "/usr/local/apache2/htdocs" 中指定的目录一致?

#
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents.  The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex index.html


指定该目录下的烦引文档,

ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"


映射cgi-bin的根目录Q必Ll对路径?

<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>


讑֮cgi-bin目录的读写权限,该目录项必须和上一条的讄一致?

?安装使用的一些经验:(x)

1.apache q程的有效用户id默认为nobody?

Z安全斚w的考虑Qapache 服务器进E的默认有效 id 被设|ؓ(f)nobodyQ这意味着该进E只拥有nobody的权限,所以必ȝ保nobody对设|的DocumentRoot 有够权限。或者可以配|a(chn)pacheq程的有效idQ但是推荐不要这样做?

2.如果|站的访问量不是很大可以考虑用xinetdq程来启动apache

(1)打开/usr/local/apache2/conf/httpd.confQ修?

ServerType inetd


(2)创徏/etc/xinetd.d/apache,内容Q?

# default: on
# description: The Apache HTTP connections.
service http
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/httpd
port = 80
# log_on_success += DURATION USERID
# log_on_failure += USERID
# nice = 10
}


(3)重新启动xinetdQ?

#/etc/rc.d/init.d/xinetd restart


3.对IPV6的支?

随着计算机网l的不断发展和扩大,IPV6已经来ؓ(f)Z所接受Qapache?.0之后的版本开始支持IPV6Q下面我q单介l一下apache针对ipv6的配|:(x)

默认情况下,apache 使用映射到IPv4的IPv6地址Q即安装配置Ӟ默认./configure -enable-v4-map Qƈ且在配置文ghttp.conf中将是:(x)

Listen 80


要apache 区别对待IPV4与IPV6的连接,安装配置Ӟ使用 ./configure -disable-v4-map , 对应配置文g中h(hun)ttp.conf Q?

Listen [::]:80


q样 apache 可以区别对?IPV4 与IPV6的连接了?


]]>
WebLogic Server主题http://www.tkk7.com/sgsoft/articles/541.html天一?/dc:creator>天一?/author>Fri, 21 Jan 2005 07:26:00 GMThttp://www.tkk7.com/sgsoft/articles/541.htmlhttp://www.tkk7.com/sgsoft/comments/541.htmlhttp://www.tkk7.com/sgsoft/articles/541.html#Feedback2http://www.tkk7.com/sgsoft/comments/commentRss/541.htmlhttp://www.tkk7.com/sgsoft/services/trackbacks/541.html
0、在看下面帖子的时候请优先查看BEA客户支持服务部的“常见技术问题(FAQsQ”专?BR>   http://www.bea.com.cn/services/custsupp/techresor/faq/index.jsp

   WebLogic Server 理最?jng)_?
   http://dev2dev.bea.com.cn/techdoc/webser/200408231.html


1?WebLogic Server安装主题
    如何安装BEA WebLogic Server
    http://dev2dev.bea.com.cn/bbs/school/guide/webser/20040178.html

    如何启动WebLogic Server
    http://dev2dev.bea.com.cn/bbs/school/guide/webser/20040179.html

    如何启动example Server
    http://dev2dev.bea.com.cn/bbs/school/guide/webser/20040180.html

    如何在solaris环境下设|WLS的自启动Q?BR>    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=8560

    Oracle和W(xu)ebLogic在Linux下面的自动启动与停止
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=8839


2?WebLogic Server配置主题
    weblogic 配置出来的各U域有什么区别?
    http://211.144.153.5/bbs/thread.jspa?forumID=81&threadID=9188

    在WLS 8.1 上配|群集的基本步骤是什么?
    http://support.bea.com/askbea_soln/attachments/S-20763/WLS81_Cluster_Configuration_One_Machine_viewlet_swf.html

    如何配置WebLogic Server的集?BR>    http://dev2dev.bea.com.cn/bbs/school/guide/webser/20040181.html

    weblogic 8.1节点理器的配置Q?BR>    http://dev2dev.bea.com.cn/bbs/school/guide/webser/20030730.html

    如何部v集群环境下的proxy Server
    http://dev2dev.bea.com.cn/bbs/school/guide/webser/20040182.html

    大系l部|,10台P4前置机,4台HPN4000机子Q布集群各位有何
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=7732&tstart=0

    L(fng)q集的帮忙回答下,好吗Q谢谢,在线{,急!
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=4800&tstart=0

    Apache 2.x与WLS8.1集成-Linux?
    http://dev2dev.bea.com.cn/bbs/school/guide/webser/20031270.html
   
    Apache plug-in配置代理h实战
    http://dev2dev.bea.com.cn/techdoc/webser/200402121.html

    WebLogic Server 8.1虚拟L配置最?jng)_?
    http://dev2dev.bea.com.cn/bbs/yuanch/ArticleShow.jsp?Id=19
  
    关于web application  Qvirtual host的配|)
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=9776&messageID=49217


3、配|SSL
   WebLogic支持密钥的长度限?BR>     WebLogic 8.1 SP3之前的版本,默认?License是SSL/ExportQ最多只能到512位密钥,如果想生大?12位的密钥Q需要安装SSL/Domestic的License?BR>     自WebLogic 8.1 SP3后,默认情况下已l启用了SSL/DomesticQ即支持1024位的数字证书?BR>  
   【推荐】WebLogic Server 8.1 配置Keystores ?SSL的步?
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=8362&tstart=0


4、hung&core&Performance tuning
   【精华-WLS调优集锦】weblogic+sqlserver速度极慢的问题(使用了集)
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=4525&tstart=0

    队列长度一直很高,吞吐量不大,讉K很慢是怎么回事Q?
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=7770&tstart=0

    'StackOverFlow' Issues in BEA WebLogic Server
    http://www.sys-con.com/WebLogic/articleprint.cfm?id=440

    推荐好文-Looking at Thread-Dumps
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=9288&tstart=0

    JVM的垃圑֛收参数怎么讄Q?BR>    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=6931

    如果没有适当的JVM调优Q应用系l中Ҏ(gu)出现java.lang.OutOfMemoryError的错误thread dump  请大家分析分析,谢谢Q?BR>    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=9779&messageID=49254

    高手帮忙分析一下我们在AIX上的Weblogic危机Q?BR>    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=9514&tstart=0

    最qweblogic用的h老是数据库连接池被耗尽
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=9121&tstart=0

    问:(x)指定的网l名不存在?
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=9393&tstart=0


5、其它:(x)
   win2000下apache2+weblogic7实现Z同一个ip地址的多个虚拟主问多个weblogic站点
   http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=6326&tstart=0

   控制台左边的?wi)结构不见了Q请大侠指点一下!
   http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=5233&tstart=0

   BEA 8.1最新管理方面的认证QBEA 8.1 Certified Administrator
   http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=7564&tstart=0

   求救Q如何远E启动WEBLOGIC服务
   http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=7709&tstart=0

   WebLogic Platform 8.1 怸q期的开发版license
   http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=8992&tstart=0



]]>
Tomcat配置技巧Top 10http://www.tkk7.com/sgsoft/articles/398.html天一?/dc:creator>天一?/author>Mon, 17 Jan 2005 07:54:00 GMThttp://www.tkk7.com/sgsoft/articles/398.htmlhttp://www.tkk7.com/sgsoft/comments/398.htmlhttp://www.tkk7.com/sgsoft/articles/398.html#Feedback0http://www.tkk7.com/sgsoft/comments/commentRss/398.htmlhttp://www.tkk7.com/sgsoft/services/trackbacks/398.htmlTomcat配置技巧Top 10

2004-01-09 17:19:25

作者:(x)Jason Brittain & Ian F. Darwin
出处Qhttp://www.orielly.com
译者:(x)陈光
2003-12-31

~者按Q现在开发Java Web应用Q徏立和部vWeb内容是一件很单的工作。用Jakarta Tomcat作ؓ(f)Servlet和JSP容器的h已经遍及全世界。Tomcath免费、跨q_{诸多特性,q且更新得很快,现在非常的流行?br />
你所需要做的就是:(x)按照你的需求配|TomcatQ只要你正确配置QTomcat一般都能适合你的要求。下面是一pd关于Tomcat的配|技巧,q些技巧源自于我的书:(x)《Tomcat权威指南》,希望对你有所帮助。—?Jason Brittain

1Q?配置pȝ理QAdmin Web ApplicationQ?br />大多数商业化的J2EE服务器都提供一个功能强大的理界面Q且大都采用易于理解的Web应用界面。Tomcat按照自己的方式,同样提供一个成熟的理工具Qƈ且丝毫不逊于那些商业化的竞争Ҏ(gu)。Tomcat的Admin Web Application最初在4.1版本时出玎ͼ当时的功能包括管理context、data source、user和group{。当然也可以理像初始化参数Quser、group、role的多U数据库理{。在后箋的版本中Q这些功能将得到很大的扩展,但现有的功能已经非常实用了?br />
Admin Web Application被定义在自动部v文gQCATALINA_BASE/webapps/admin.xml ?br />Q译者注QCATALINA_BASE即tomcat安装目录下的server目录Q?br />
你必ȝ辑这个文Ӟ以确定Context中的docBase参数是绝对\径。也是_(d)CATALINA_BASE/webapps/admin.xml 的\径是l对路径。作为另外一U选择Q你也可以删除这个自动部|文Ӟ而在server.xml文g中徏立一个Admin Web Application的contextQ效果是一L(fng)。你不能理Admin Web Applicationq个应用Q换而言之,除了删除CATALINA_BASE/webapps/admin.xml Q你可能什么都做不了?br />
如果你用UserDatabaseRealmQ默认)Q你需要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml 文g中。你~辑q个文gQ添加一个名叫“admin”的role 到该文g中,如下Q?br />
<role name="admin"/>

你同样需要有一个用Pq且q个用户的角色是“admin”。象存在的用户那Pd一个用P改变密码使其更加安全Q:(x)

<user name="admin" password="deep_dark_secret" roles="admin"/>

当你完成q些步骤后,请重新启动TomcatQ访问http://localhost:8080/adminQ你看C个登录界面。Admin Web Application采用Z容器理的安全机Ӟq用了Jakarta Struts框架。一旦你作ؓ(f)“admin”角色的用户d理界面Q你能够用这个管理界面配|Tomcat?br />
2Q配|应用管理(Manager Web ApplicationQ?br />Manager Web Application让你通过一个比Admin Web Application更ؓ(f)单的用户界面Q执行一些简单的Web应用d?br />
Manager Web Application被被定义在一个自动部|文件中Q?br />
CATALINA_BASE/webapps/manager.xml ?br />
你必ȝ辑这个文Ӟ以确保context的docBase参数是绝对\径,也就是说CATALINA_HOME/server/webapps/manager的绝对\径?br />Q译者注QCATALINA_HOME即tomcat安装目录Q?br />
如果你用的是UserDatabaseRealmQ那么你需要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文g中。接下来Q编辑这个文Ӟd一个名为“manager”的角色到该文g中:(x)

<role name=”manager?gt;

你同样需要有一个角色ؓ(f)“manager”的用户。像已经存在的用户那Pd一个新用户Q改变密码其更加安全)Q?br />
<user name="manager" password="deep_dark_secret" roles="manager"/>

然后重新启动TomcatQ访问http://localhost/manager/listQ将看到一个很朴素的文本型理界面Q或者访问http://localhost/manager/html/listQ将看到一个HMTL的管理界面。不是哪种方式都说明你的Manager Web Application现在已经启动了?br />
Manager application让你可以在没有系l管理特权的基础上,安装新的Web应用Q以用于试。如果我们有一个新的web应用位于/home/user/hello下在Qƈ且想把它安装?/hello下,Z试q个应用Q我们可以这么做Q在W一个文件框中输入?hello”(作ؓ(f)讉K时的pathQ,在第二个文本框中输入“file:/home/user/hello”(作ؓ(f)Config URLQ?br />
Manager applicationq允怽停止、重新启动、移除以及重新部|一个web应用。停止一个应用其无法被讉KQ当有用户尝试访问这个被停止的应用时Q将看到一?03的错误——?03 - This application is not currently available”?br />
U除一个web应用Q只是指从Tomcat的运行拷贝中删除了该应用Q如果你重新启动TomcatQ被删除的应用将再次出现Q也是_(d)U除q不是指从硬盘上删除Q?br />
3Q部|一个web应用
有两个办法可以在pȝ中部|web服务?br />1> 拯你的WAR文g或者你的web应用文g夹(包括该web的所有内容)?CATALINA_BASE/webapps目录下?br />2> Z的web服务建立一个只包括context内容的XML片断文gQƈ把该文g攑ֈ$CATALINA_BASE/webapps目录下。这个web应用本n可以存储在硬盘上的Q何地斏V?br />
如果你有一个WAR文gQ你若想部v它,则只需要把该文件简单的拯到CATALINA_BASE/webapps目录下即可,文g必须以?war”作为扩展名。一旦Tomcat监听到这个文Ӟ它将Q缺省的Q解开该文件包作ؓ(f)一个子目录Qƈ以WAR文g的文件名作ؓ(f)子目录的名字。接下来QTomcat在内存中徏立一个contextQ就好象你在server.xml文g里徏立一栗当Ӟ其他必需的内容,从server.xml中的DefaultContext获得?br />
部vweb应用的另一U方式是写一个Context XML片断文gQ然后把该文件拷贝到CATALINA_BASE/webapps目录下。一个Context片断q一个完整的XML文gQ而只是一个context元素Q以及对该应用的相应描述。这U片断文件就像是从server.xml中切取出来的context元素一P所以这U片断被命名为“context片断”?br />
举个例子Q如果我们想部v一个名叫MyWebApp.war的应用,该应用用realm作ؓ(f)讉K控制方式Q我们可以用下面这个片断:(x)

<!--  
 Context fragment for deploying MyWebApp.war  
-->
<Context path="/demo" docBase="webapps/MyWebApp.war"
        debug="0" privileged="true">
 <Realm className="org.apache.catalina.realm.UserDatabaseRealm"                
        resourceName="UserDatabase"/>
</Context>

把该片断命名为“MyWebApp.xml”,然后拯到CATALINA_BASE/webapps目录下?br />
q种context片断提供了一U便利的Ҏ(gu)来部|web应用Q你不需要编辑server.xmlQ除非你x变缺省的部vҎ(gu),安装一个新的web应用时不需要重启动Tomcat?br />

4Q配|虚拟主机(Virtual HostsQ?br />关于server.xml中“Host”这个元素,只有在你讄虚拟L的才需要修攏V虚拟主机是一U在一个web服务器上服务多个域名的机ӞҎ(gu)个域名而言Q都好象独n了整个主机。实际上Q大多数的小型商务网站都是采用虚拟主机实现的Q这主要是因拟主直接q接到Internetq提供相应的带宽Q以保障合理的访问响应速度Q另外虚拟主能提供一个稳定的固定IP?br />
Z名字的虚拟主机可以被建立在Q何web服务器上Q徏立的Ҏ(gu)是通过在域名服务器QDNSQ上建立IP地址的别名,q且告诉web服务器把d不同域名的请求分发到相应的网늛录。因文章主要是讲TomcatQ我们不准备介绍在各U操作系l上讄DNS的方法,如果你在q方面需要帮助,请参考《DNS and Bind》一书,作者是Paul Albitz and Cricket Liu (O'Reilly)。ؓ(f)了示范方便,我将使用一个静态的L文gQ因是测试别名最单的Ҏ(gu)?br />在Tomcat中用虚拟主机,你需要设|DNS或主机数据。ؓ(f)了测试,为本地IP讄一个IP别名p够了Q接下来Q你需要在server.xml中添加几行内容,如下Q?br />
<Server port="8005" shutdown="SHUTDOWN" debug="0">
 <Service name="Tomcat-Standalone">
   <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"/>
   <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0" scheme="https" secure="true"/>
     <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
clientAuth="false" protocol="TLS" />
   </Connector>
   <Engine name="Standalone" defaultHost="localhost" debug="0">
     <!-- This Host is the default Host -->
     <Host name="localhost" debug="0" appBase="webapps"
     unpackWARs="true" autoDeploy="true">
       <Context path="" docBase="ROOT" debug="0"/>
       <Context path="/orders" docBase="/home/ian/orders" debug="0"
                      reloadable="true" crossContext="true">
       </Context>
     </Host>

     <!-- This Host is the first "Virtual Host": www.example.com -->
     <Host name="www.example.com" appBase="/home/example/webapp">
       <Context path="" docBase="."/>
     </Host>

   </Engine>
 </Service>
</Server>

Tomcat的server.xml文gQ在初始状态下Q只包括一个虚拟主机,但是它容易被扩充到支持多个虚拟主机。在前面的例子中展示的是一个简单的server.xml版本Q其中粗体部分就是用于添加一个虚拟主机。每一个Host元素必须包括一个或多个context元素Q所包含的context元素中必L一个是默认的contextQ这个默认的context的显C\径应该ؓ(f)I(例如Qpath=””)?br />
5Q配|基验证QBasic AuthenticationQ?br />容器理验证Ҏ(gu)控制着当用戯问受保护的web应用资源Ӟ如何q行用户的n份鉴别。当一个web应用使用了Basic AuthenticationQBASIC参数在web.xml文g中auto-method元素中设|)Q而有用户讉K受保护的web应用ӞTomcat通过HTTP Basic Authentication方式Q弹Z个对话框Q要求用戯入用户名和密码。在q种验证Ҏ(gu)中,所有密码将被以64位的~码方式在网l上传输?br />
注意Q用Basic Authentication通过被认为是不安全的Q因为它没有强健的加密方法,除非在客L(fng)和服务器端都使用HTTPS或者其他密码加密码方式Q比如,在一个虚拟私人网l中Q。若没有额外的加密方法,|络理员将能够截获Q或滥用Q用L(fng)密码。但是,如果你是刚开始用TomcatQ或者你惛_你的web应用中测试一下基于容器的安全理QBasic Authenticationq是非常易于讄和用的。只需要添?lt;security-constraint>?lt;login-config>两个元素C的web应用的web.xml文g中,q且在CATALINA_BASE/conf/tomcat-users.xml 文g中添加适当?lt;role>?lt;user>卛_Q然后重新启动Tomcat?br />
下面例子中的web.xml摘自一个俱乐部?x)员|站pȝQ该pȝ中只有member目录被保护v来,q用Basic Authenticationq行w䆾验证。请注意Q这U方式将有效的代替Apache web服务器中?htaccess文g?br />
<!--
 Define the Members-only area, by defining
 a "Security Constraint" on this Application, and
 mapping it to the subdirectory (URL) that we want
 to restrict.
-->
<security-constraint>
 <web-resource-collection>
   <web-resource-name>
     Entire Application
   </web-resource-name>
   <url-pattern>/members/*</url-pattern>
 </web-resource-collection>
 <auth-constraint>
     <role-name>member</role-name>
 </auth-constraint>
</security-constraint>
<!-- Define the Login Configuration for this Application -->
<login-config>
 <auth-method>BASIC</auth-method>
 <realm-name>My Club Members-only Area</realm-name>
</login-config>

6Q配|单点登录(Single Sign-OnQ?br />一旦你讄了realm和验证的Ҏ(gu)Q你需要进行实际的用户d处理。一般说来,对用戯言dpȝ是一件很ȝ的事情,你必d量减用L(fng)录验证的ơ数。作为缺省的情况Q当用户W一ơ请求受保护的资源时Q每一个web应用都会(x)要求用户d。如果你q行了多个web应用Qƈ且每个应用都需要进行单独的用户验证Q那q看h有点像你在与你的用h斗。用户们不知道怎样才能把多个分ȝ应用整合成一个单独的pȝQ所有他们也׃知道他们需要访问多个不同的应用,只是很迷惑,Z么总要不停的登录?br />
Tomcat 4的“single sign-on”特性允许用户在讉K同一虚拟L下所有web应用Ӟ只需d一ơ。ؓ(f)了用这个功能,你只需要在Host上添加一个SingleSignOn Valve元素卛_Q如下所C:(x)

<Valve className="org.apache.catalina.authenticator.SingleSignOn"
      debug="0"/>

在Tomcat初始安装后,server.xml的注释里面包括SingleSignOn Valve配置的例子,你只需要去掉注释,卛_使用。那么,M用户只要dq一个应用,则对于同一虚拟L下的所有应用同h效?br />
使用single sign-on valve有一些重要的限制Q?br />1> value必须被配|和嵌套在相同的Host元素里,q且所有需要进行单炚w证的web应用Q必通过context元素定义Q都位于该Host下?br />2> 包括׃n用户信息的realm必须被设|在同一UHost中或者嵌套之外?br />3> 不能被context中的realm覆盖?br />4> 使用单点d的web应用最好用一个Tomcat的内|的验证方式Q被定义在web.xml中的<auth-method>中)Q这比自定义的验证方式强QTomcat内置的的验证方式包括basic、digest、form和client-cert?br />5> 如果你用单点登录,q希望集成一个第三方的web应用C的网站中来,q且q个新的web应用使用它自q验证方式Q而不使用容器理安全Q那你基本上没招了。你的用hơ登录原来所有应用时需要登录一ơ,q且在请求新的第三方应用时还得再d一ơ。当Ӟ如果你拥有这个第三方web应用的源码,而你又是一个程序员Q你可以修改它,但那恐怕也不容易做?br />6> 单点d需要用cookies?br />
7Q配|用户定制目录(Customized User DirectoresQ?br />一些站点允怸别用户在服务器上发布|页。例如,一所大学的学院可能想l每一位学生一个公共区域,或者是一个ISP希望l一些webI间l他的客P但这又不是虚拟主机。在q种情况下,一个典型的Ҏ(gu)是在用户名前面加一个特D字W(~Q,作ؓ(f)每位用户的网站,比如Q?br />
http://www.cs.myuniversity.edu/~username
http://members.mybigisp.com/~username

Tomcat提供两种Ҏ(gu)在主Z映射q些个h|站Q主要用一对特D的Listener元素。Listener的className属性应该是org.apache.catalina.startup.UserConfigQuserClass属性应该是几个映射cM一。如果你的系l是UnixQ它?yu)有一个标准的/etc/passwd文gQ该文g中的帐号能够被运行中的Tomcat很容易的dQ该文g指定了用L(fng)ȝ录,使用PasswdUserDatabase 映射cR?br />
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html"
userClass="org.apache.catalina.startup.PasswdUserDatabase"/>

web文g需要放|在?home/users/ian/public_html 或?/users/jbrittain/public_html一L(fng)目录下面。当然你也可以改变public_html 到其他Q何子目录下?br />
实际上,q个用户目录Ҏ(gu)不一定需要位于用户主目录下里面。如果你没有一个密码文Ӟ但你又想把一个用户名映射到公q?home一L(fng)录的子目录里面,则可以用HomesUserDatabasecR?br />
<Listener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html" homeBase="/home"
userClass="org.apache.catalina.startup.HomesUserDatabase"/>

q样一来,web文g可以位于像/home/ian/public_html 或?/home/jasonb/public_html一L(fng)目录下。这UŞ式对Windows而言更加有利Q你可以使用一个像c:\homeq样的目录?br />
q些Listener元素Q如果出玎ͼ则必dHost元素里面Q而不能在context元素里面Q因为它们都用应用于Host本n?br />

8Q在Tomcat中用CGI脚本
Tomcat主要是作为Servlet/JSP容器Q但它也有许多传lweb服务器的性能。支持通用|关接口QCommon Gateway InterfaceQ即CGIQ就是其中之一QCGI提供一l方法在响应览器请求时q行一些扩展程序。CGI之所以被UCؓ(f)通用Q是因ؓ(f)它能在大多数E序或脚本中被调用,包括QPerlQPythonQawkQUnix shell scripting{,甚至包括Java。当Ӟ你大概不?x)把一个Java应用E序当作CGI来运行,毕竟q样太过原始。一般而言Q开发Servlet总要比CGIh更好的效率,因ؓ(f)当用L(fng)M个链接或一个按钮时Q你不需要从操作pȝ层开始进行处理?br />
Tomcat包括一个可选的CGI ServletQ允怽q行遗留下来的CGI脚本?br />
Z使Tomcat能够q行CGIQ你必须做如下几件事Q?br />1. 把servlets-cgi.renametojar Q在CATALINA_HOME/server/lib/目录下)改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下?br />2. 在Tomcat的CATALINA_BASE/conf/web.xml 文g中,把关?lt;servlet-name> CGI的那D늚注释LQ默认情况下Q该D位于第241行)?br />3. 同样Q在Tomcat的CATALINA_BASE/conf/web.xml文g中,把关于对CGIq行映射的那D늚注释LQ默认情况下Q该D位于第299行)。注意,q段内容指定了HTML链接到CGI脚本的访问方式?br />4. 你可以把CGI脚本攄在WEB-INF/cgi 目录下(注意QW(xu)EB-INF是一个安全的地方Q你可以把一些不惌用户看见或基于安全考虑不想暴露的文件放在此处)Q或者你也可以把CGI脚本攄在context下的其他目录下,qؓ(f)CGI Servlet调整cgiPathPrefix初始化参数。这指定的CGI Servlet的实际位|,且不能与上一步指定的URL重名?br />5. 重新启动TomcatQ你的CGI可以运行了?br />
在Tomcat中,CGIE序~省攄在WEB-INF/cgi目录下,正如前面所提示的那PW(xu)EB-INF目录受保护的Q通过客户端的览器无法窥探到其中内容Q所以对于放|含有密码或其他敏感信息的CGI脚本而言Q这是一个非常好的地斏Vؓ(f)了兼容其他服务器Q尽你也可以把CGI脚本保存在传l的/cgi-bin目录Q但要知道,在这些目录中的文件有可能被网上好奇的冲浪者看到。另外,在Unix中,L(fng)定运行Tomcat的用h执行CGI脚本的权限?br />
9Q改变Tomcat中的JSP~译器(JSP CompilerQ?br />在Tomcat 4.1Q或更高版本Q大概)QJSP的编译由包含在Tomcat里面的AntE序控制器直接执行。这听v来有一点点奇怪,但这正是Ant有意Z的一部分Q有一个API文档指导开发者在没有启动一个新的JVM的情况下Q用Ant。这是用Antq行Java开发的一大优ѝ另外,q也意味着你现在能够在Ant中用Q何javac支持的编译方式,q里有一个关于Apache Ant使用手册的javac page列表。用v来是Ҏ(gu)的,因ؓ(f)你只需要在<init-param> 元素中定义一个名字叫“compiler”,q且在value中有一个支持编译的~译器名字,CZ如下Q?br />
<servlet>
   <servlet-name>jsp</servlet-name>
   <servlet-class>
     org.apache.jasper.servlet.JspServlet
   </servlet-class>
   <init-param>
     <param-name>logVerbosityLevel</param-name>
     <param-value>WARNING</param-value>
   </init-param>
   <init-param>
     <param-name>compiler</param-name>
     <param-value>jikes</param-value>
   </init-param>
   <load-on-startup>3</load-on-startup>
</servlet>

当然Q给出的~译器必dl安装在你的pȝ中,q且CLASSPATH可能需要设|,那处决于你选择的是何种~译器?br />
10Q限制特定主问(Restricting Access to Specific HostsQ?br />有时Q你可能想限制对Tomcat web应用的访问,比如Q你希望只有你指定的L或IP地址可以讉K你的应用。这样一来,只有那些指定的的客L(fng)可以讉K服务的内容了。ؓ(f)了实现这U效果,Tomcat提供了两个参C你配|:(x)RemoteHostValve 和RemoteAddrValve?br />
通过配置q两个参敎ͼ可以让你qo(h)来自h的主机或IP地址Qƈ允许或拒l哪些主?IP。与之类似的Q在Apache的httpd文g里有Ҏ(gu)个目录的允许/拒绝指定?br />例如你可以把Admin Web application讄成只允许本地讉KQ设|如下:(x)

<Context path="/path/to/secret_files" ...>
 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="127.0.0.1" deny=""/>
</Context>

如果没有l出允许L的指定,那么与拒l主机匹配的L׃(x)被拒l,除此之外的都是允许的。与之类|如果没有l出拒绝L的指定,那么与允怸机匹配的L׃(x)被允许,除此之外的都是拒l的?br />
--------------------------------------

作者简介:(x)
Jason Brittain是CollabNet公司的一名资pY件工E师Q主要负责Y件底层架构的开发。他已经为Apache Jakarta目做了很多贡献Q多q以来,他一直是一名积极的开源Y件开发者?br />
Ian F. Darwin已经在计机行业工作?0q_(d)(x)?980q开始用UnixQ从1995q开始用JavaQ从1998q开始用OpenBSD。他是两本Oreilly图书的作者:(x)Checking C Programs with lint ?Java CookbookQ还与Jason Brittain合著了Tomcat: The Definitive Guide?br />
译者简介:(x)
陈光QHolen ChenQ,J2EE目l理Q熟(zhn)知识管理及?sh)子政务Q致力于Apache Jakarta目在国q的推广及深层次应用Q可通过 holen@263.net与作者联pR?/div>

]]>在Eclipse中用JUnit(译)http://www.tkk7.com/sgsoft/articles/261.html天一?/dc:creator>天一?/author>Thu, 13 Jan 2005 01:26:00 GMThttp://www.tkk7.com/sgsoft/articles/261.htmlhttp://www.tkk7.com/sgsoft/comments/261.htmlhttp://www.tkk7.com/sgsoft/articles/261.html#Feedback0http://www.tkk7.com/sgsoft/comments/commentRss/261.htmlhttp://www.tkk7.com/sgsoft/services/trackbacks/261.html

在Eclipse中用JUnit(译)

发布日期Q?004-11-01 作者:(x) rosen ?Blog 阅读人次Q?013   q篇文章向你介lJunitQ一个用来在目中进行测试和调试的工兗在介绍完TDDQ以试驱动开发)理论后,进一步讲解怎样在流行的Eclipse中徏立你自己的JUnit试。向你展C如何测试Hello Worldq样单的E序?br />
    许多书上都讨Z自动试Q但是只有很的著作注意到这么一个问题,那就是怎样把这些测试组lv来。随着试的增加,攄和调用这些测试却变得更加ȝ。这成Z个重要问题,以至于出CTDDQ极限编E(XPQTDD得以普及。另外,你可以这L(fng)解TDDQ通过试来开发?br />
    TDD的主要规?nbsp;:
    在编写程序代码之前,与之对应的自动测试必被写好。甚至程序代码ƈ不存在,那也要看见一个失败的试l果?br />
    在测试通过后,副本代码必须被丢弃?br />
    有一个具体步骤(可能指的是《Extreme Programming》)可以被Q何一个程序员来参考,而不需要特D的其他Ҏ(gu)。在我们开始写试之前Q这些步骤(章节Q应该被首先阅读——怎样l织自动试?br />   
    讲解一下不同种cȝ试Q?br />   
    单元试Q检模块(也就是类Q的正确性。如果对象需要访问外部的数据资源Q例如数据库Q就需要模拟一个mock objectsQ但在实际中真实数据与测试环境是不同的?br />
    客户试Q这是功能性、系l、和验收试。用来测试整体的pȝҎ(gu)。在XP中,q些试qL(fng)写?br />
    l合试Q介于用h试和单元试之间的桥梁。综合测试帮助测试应用程序的交互性。一般情况下Qmock objects不被用于l合试Q它?x)增加测试时间。同Pl合试l常依赖Ҏ(gu)的测试环境,例如数据库送来的测试数据。综合测试也需要用到外部类库。例如ؓ(f)J2EE应用E序q行l合试的类库Cactus。解释这些测试超Z本文的范_(d)需要更加详l的信息请参考http://jakarta.apache.org/cactus/?br />
    开发h员测试:(x)q是用来让开发h员检验自׃码或新函数的。对于每一个开发h员,只要有可能,需要有更多的测试来验代码。组l这些测试和l织E序代码一样重要?br />
    在以下章节,只要提到“测试”,那就指的是开发h员测试?br />
    我们几乎准备好开始徏立测试了Q先应该为我们的试选择名字。你也许?x)说Q“这不是问题Q把‘Test’这个字攑֜cd前面Q就好了Q”不?x)这么快Q让我来说一下这个步骤存在的问题Q?br />
    在TDD中,被测试的cL者方法还不存在?br />
    一个测试能够覆盖多个方法,甚至多个c,q是可能的?br />
    以上只是一些普遍问题;q存在更多的问题?br />
    让我来提一个徏议,在测试命名时Q测试类的名字应该让Z眼就知道q是一个测试类Q且能说明它要测试什么,注意是否和其他类重名。按照以上徏议做Q就很简单了Q也不用担心名字太长或难听?br />
    卛_在Eclipse中用JUnit工具创徏我们W一个测试了。假设你已经下蝲了一个最新的Eclipse版本。如果还没有Q你应该d方站点http://www.eclipse.org下蝲。还需要JUnitQ也可以从http://www.junit.org/下蝲?br />
    q行Eclipse。新Z个workplace目Q点?yn)L?>新徏->目Q选择Java目Q点M一步。v一个项目名Uͼ例如ProjectWithJUnit。点d成。这样就完成新项目的建立了。再来配|一下EclipseQ在构徏路径中添加JUnitcd。在工具条上点击目->属性,选择Java构徏路径Q库Q选择d外部JARQ浏览Junit被存储的目录Q选择junit.jarQ点?yn)L开。你会(x)看见JUnit出现在库的列表中。点ȝ定,让Eclipse重徏路径?br />
    现在开发我们的“Hello World”例子。按照TDD的规则,应该在代码徏立以前先把测试写好。ؓ(f)了能够在某出开始,我们假设未来的类名是HelloWorldQƈ且有一个方法Say()Q这个方法返回String的|例如“Hello World!”)?br />
    建立试Q在ProjectWithJUnit的标题上面点d键,选择新徏->其他Q展开“Java”选项Q选择JUnit。在双的栏目对话框中选择试案例Q然后下一步。参考图1?br />
?. 在Eclipse中徏立JUnit试

    在测试类q一栏中Q写上将要被试的类名HelloWorld。选择一个测试案例的名字Q例如TestThatWeGetHelloWorldPromptQ是的,看上d长,但是很清楚它的行为。)点击完成?br />
    TestThatWeGetHelloWorldPrompt的代码如下:(x)

    import junit.framework.TestCase;

 

    public class TestThatWeGetHelloWorldPrompt

    extends TestCase {

        public TestThatWeGetHelloWorldPrompt(

            String name) {

            super(name);

        }

        public void testSay() {

            HelloWorld hi = new HelloWorld();

            assertEquals(\"Hello World!\", hi.say());

        }

        public static void main(String[] args) {

            junit.textui.TestRunner.run(

                TestThatWeGetHelloWorldPrompt.class);

        }

    }

 

    代码q不复杂Q只是有点与众不同。然而,让我们考察一下细节。我们承了JUnit的TestCasec,它在JUnit的javadocs定义为“运行众多测试的夹具。”JUnit也有TestSuitec,它是一l测试案例的集合Q但在本文中不做讨论?br />
    建立试案例的步骤如下:(x)
    

    1、徏立一个junit.framework.TestCase的实例?br />
    2、定义一些以“test”开头的无返回方法(例如testWasTransactionSuccessful()QtestShow()Q等{)?br />
   TestThatWeGetHelloWorldPrompt.java包含q些QTestCase的子cd一个叫做testSay()的方法。这个方法调用了assertEquals()函数Q它用来比较我们预期的值和由say()q回的倹{?br />
    main()Ҏ(gu)用来q行试和显C出的。JUnit的TestRunner处理试Q提供基于图像和文本的输现Ş式。我们用基于文本的版本Q因为Eclipse支持它,且也适合我们。当开始运行后Q基于文本的版本试?x)以文本形式输出QEclipse?x)把q些输出自动变成囑փ界面的输出?br />
    按照TDD规范Q首ơ运行测试,应该故意让它p|。点击运?>q行?>Junit试Q记住TestThatWeGetHelloWorldPrompt.java应该被突出的昄在包资源理器中Q。在左边H口Q应该看见JUnitH口而不是包资源理器,它显CZ个红条,一ơ失败的试Q具体的p|原因参看?。如果没有自动显C些内容,点击JUnit标签Q在底部的左边)?br />

?. JUnit中失败的试

    

    很好Q的却失败了。现在我们来建立被测试代码:(x)在包资源理器窗口的ProjectWithJUnit标题上右击,选择新徏->cR选择cdQ我们已l假设了它叫HelloWorldQ然后直接点d成。ؓ(f)HelloWorld.java填入下列代码Q?br />
        public class HelloWorld {

            public String say() {

                return(\"Hello World!\");

            }

        }

    q段代码很简单,甚至不需要注解,我们再来看看l果。按照上面描q过的方式,在JUnit的窗口中昄了一个绿条,参看?。绿条证明测试成功?br />

?. JUnit中成功的试

                              

    现在Q我们想再让试p|一ơ,但原因不同。这有助于展CJUnit试中不同的报错信息。修改assertEquals()代码Q把“Hello World!”变成“Hello Me!”。当再次q行JUnitӞl果变成了红条,在JUnitH口的底部输Zp|原因Q参看图4?br />
?. JUnit中的ComparisonError

                              

    最后,我想说一下关于测试是开发过E中的必要部分的话题。测试代码一直是开发中的重要部分。经q近几年的发展,已得C很大的提高,q要归功于强大的理论研究Q比如“expectations-based development”等{)Q和快速发展的试工具包,q有试q程的改q。如果你对这文章感兴趣Q那请你׃些时间来正式的学?fn)一下测试理论吧Q这对你的工作很有用?br /> 

    关于作者:(x)
    Alexander Prohorenko 一名UNIXpȝ理员、网l安全管理员?br />
    Olexiy Prohorenko    一名Java开发者居住在乌克兰的Dniepropetrovsk

]]>
在Tomcat里发布自qE序http://www.tkk7.com/sgsoft/articles/188.html天一?/dc:creator>天一?/author>Mon, 10 Jan 2005 09:41:00 GMThttp://www.tkk7.com/sgsoft/articles/188.htmlhttp://www.tkk7.com/sgsoft/comments/188.htmlhttp://www.tkk7.com/sgsoft/articles/188.html#Feedback2http://www.tkk7.com/sgsoft/comments/commentRss/188.htmlhttp://www.tkk7.com/sgsoft/services/trackbacks/188.html扑ֈ%tomcathome%\conf\server.xml文g,?lt;host>标签中加?

<Context path="/虚拟目录? docBase="本地路径" debug="0"
reloadable="true" crossContext="true">
</Context>
q样你的jsp文g攑ֈ"本地路径"?然后在浏览器中输入http://127.0.0.1:8080/虚拟目录?xxx.jsp卛_执行.
注意!!!q没有完!!q时候你的这个虚拟目录还没有执行servlet的能?当然如果你不用servlet那就令当别论?.
下面是一个范?

<Context path="/bbs" docBase="work" debug="0"
reloadable="true" crossContext="true">
</Context>
你要Z个名叫work的目录在webapps\?
要ɘq个work目录可以执行servlet,要有一个配|文?-web.xml,内容?

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>MyWEB</display-name>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>

q个使最配|?仅仅是指明servlet的位|?要把q个文g攑ֈwebapps\work\WEB-INF\?你自qservlet攑ֈwebapps\work\WEB-INF\classes\?


]]>
Eclips使用U技http://www.tkk7.com/sgsoft/articles/191.html天一?/dc:creator>天一?/author>Sat, 08 Jan 2005 14:31:00 GMThttp://www.tkk7.com/sgsoft/articles/191.htmlhttp://www.tkk7.com/sgsoft/comments/191.htmlhttp://www.tkk7.com/sgsoft/articles/191.html#Feedback5http://www.tkk7.com/sgsoft/comments/commentRss/191.htmlhttp://www.tkk7.com/sgsoft/services/trackbacks/191.html阅读全文

]]>
վ֩ģ壺 պƷƵ| СƵ߹ۿ| ĻѴƬ| žžAVƬ| þ޾Ʒ߳ۺɫaƬ| ձ߹ۿ| ˾þô߽ | ޸ľƷ26U| ޾Ʒ͵| ȷӰԴƬҹ߹ۿƵѲ| ѹۿ| ձ㽶ƵۿƵ| ƷؼһëƬѹۿ| ޸Ļ| Ļ޵һ| ѹۿ˵ŮƵ| ëƬav߲һ| av뾫ƷϼӰ | ɫۺϽѹۿ| Ļ߹ۿ| ۺa| ȫaëƬ| avƬ߹ۿվ| þþþavר| ƬAëƬ鴤ɫ| ŷaԴ| ˾þں91| Ʒ㽶߹ۿ| ߾ƷAAVV| AV˿߹ۿ| Ѹվ߹ۿ| 91Ӱ| þþƷһ| þþþþaŷa| 91ѸƷ| ߹ۿ| ߹ۿwwwѿ| Ļþ| ҹavƵ| һaƬɫëƬվ| ۺۺ|