ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>黄色av网站在线免费观看,视频一区二区三区在线看免费看,亚洲人成在线播放网站岛国http://www.aygfsteel.com/jacally/category/19410.htmlJava原生æ€?/description>zh-cnMon, 17 Mar 2008 20:07:51 GMTMon, 17 Mar 2008 20:07:51 GMT60[导入]CAS 单点ç™Õd½•安装½W”è®°4 -- asp.net client端的讄¡½®http://www.aygfsteel.com/jacally/articles/186657.htmlLibLibSun, 02 Mar 2008 03:52:00 GMThttp://www.aygfsteel.com/jacally/articles/186657.htmlhttp://www.aygfsteel.com/jacally/comments/186657.htmlhttp://www.aygfsteel.com/jacally/articles/186657.html#Feedback0http://www.aygfsteel.com/jacally/comments/commentRss/186657.htmlhttp://www.aygfsteel.com/jacally/services/trackbacks/186657.html ¾|‘ç«™: JavaEye  作è€? jacally  链接åQ?a style="color: red;">http://lib.javaeye.com/blog/166619  发表旉™—´: 2008òq?3æœ?2æ—?

声明åQšæœ¬æ–‡ç³»JavaEye¾|‘站发布的原创博客文章,未经作者书面许可,严禁ä»ÖM½•¾|‘站转蝲本文åQŒå¦åˆ™å¿…ž®†è¿½½I¶æ³•律责任!

CAS 单点ç™Õd½•安装½W”è®°4
--- asp.net client端的讄¡½®

1、首先修改web.Configæ–‡äšgåQŒåŠ å…¥ä»¥ä¸‹è®¾¾|®ï¼š
<authentication mode="Forms" >
<forms name="casauth" loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>

本ähå¯?net不是很熟悉,感觉˜q™é‡Œçš„配¾|®ç±»ä¼¼java web应用½E‹åºä¸­çš„˜q‡æ×o器,当用戯‚®¿é—®web™å‰|—¶é¦–先跌™{到login.aspx™åµé¢˜q›è¡ŒéªŒè¯ã€?

2、加入以下c#代码到login.aspx™åµé¢çš„加载事件中åQ?
    //CAS íw«ä†¾éªŒè¯ 服务器地址
private const string CASHOST = "https://sso.gzps.net:8443/cas/";

protected void Page_Load(object sender, EventArgs e)
{
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

// Look for the "ticket=" after the "?" in the URL
string tkt = Request.QueryString["ticket"];

// This page is the CAS service=, but discard any query string residue
string service = Request.Url.GetLeftPart(UriPartial.Path);

// First time through there is no ticket=, so redirect to CAS login
if (tkt == null || tkt.Length == 0)
{
string redir = CASHOST + "login?" +
"service=" + service;
Response.Redirect(redir);
return;
}

// Second time (back from CAS) there is a ticket= to validate
string validateurl = CASHOST + "serviceValidate?" +
"ticket=" + tkt + "&"+
"service=" + service;
StreamReader Reader = new StreamReader( new WebClient().OpenRead(validateurl));
string resp = Reader.ReadToEnd();
// I like to have the text in memory for debugging rather than parsing the stream

// Some boilerplate to set up the parse.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlTextReader reader = new XmlTextReader(resp, XmlNodeType.Element, context);

string netid = null;

// A very dumb use of XML. Just scan for the "user". If it isn't there, its an error.
while (reader.Read())
{
if (reader.IsStartElement()) {
string tag = reader.LocalName;
if (tag=="user")
netid = reader.ReadString();
}
}
// if you want to parse the proxy chain, just add the logic above
reader.Close();
// If there was a problem, leave the message on the screen. Otherwise, return to original page.
if (netid == null)
{
Label1.Text = "CAS returned to this application, but then refused to validate your identity.";
}
else
{
Session["UserName"] = netid;
Label1.Text = "Welcome " + netid;
FormsAuthentication.RedirectFromLoginPage(netid, false); // set netid in ASP.NET blocks
}

}
}


以上代码参照了ja-sig¾|‘站的解å†Ïx–¹æ¡ˆï¼šhttp://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication

3ã€ä»¥ä¸ø™¿™æ ·å°±å¯ä»¥äº†ï¼Œ˜qè¡Œæ—¶å¯ä»¥èŸ©åˆ°sso服务器进行验证,但蟩转以后报以下错误åQ?
" System.Net.WebExceptionã€?基础˜qžæŽ¥å·²å…³é—­ã€?无法建立与远½E‹æœåŠ¡å™¨ä¿¡ä“Q关系 "ã€?
应该与CAS Server端安装了数字证书åQŒè€?net Clientç«¯åÆˆæ²¡æœ‰å®‰è£…ç›¸åº”çš„è¯ä¹¦æœ‰å…Ÿë€?
可以通过配置IIS服务器,支持HTTPS SSL协议实现安全数据交换中介¾lçš„æ­¥éª¤å¯¼å…¥CAS 服务端的数字证书,或者通过http://support.microsoft.com/kb/823177/上介¾lçš„解决æ–ÒŽ¡ˆ˜q›è¡Œå¤„理åQ?
实现¾c?
using System.Net;
using System.Security.Cryptography.X509Certificates;

public class MyPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint
, X509Certificate certificate
, WebRequest request
, int certificateProblem) {

//Return True to force the certificate to be accepted.
return true;

} // end CheckValidationResult
} // class MyPolicy


客户端代码中包含下列代码åQ?
   System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();


所有代码见附äšgWebSite.rar,ž®†å…¶éƒ¨çÖvåˆîC½ çš„IIS服务器就可以了ã€?
关于IIS服务器的讄¡½®è§?a target="_blank">asp.net一夜速成教程
本文的讨è®ÞZ¹Ÿå¾ˆç²¾å½©ï¼Œ‹¹è§ˆè®¨è®º>>


JavaEye推荐
中国领先的电子商务网站-淘宝¾|‘招贤纳士,诚聘Java工程å¸?/span>



文章来源:http://lib.javaeye.com/blog/166619

]]>
[导入]CAS 单点ç™Õd½•安装½W”è®°3 -- 与acegi集成http://www.aygfsteel.com/jacally/articles/186658.htmlLibLibThu, 28 Feb 2008 15:39:00 GMThttp://www.aygfsteel.com/jacally/articles/186658.htmlhttp://www.aygfsteel.com/jacally/comments/186658.htmlhttp://www.aygfsteel.com/jacally/articles/186658.html#Feedback0http://www.aygfsteel.com/jacally/comments/commentRss/186658.htmlhttp://www.aygfsteel.com/jacally/services/trackbacks/186658.html ¾|‘ç«™: JavaEye  作è€? jacally  链接åQ?a style="color: red;">http://lib.javaeye.com/blog/165980  发表旉™—´: 2008òq?2æœ?8æ—?

声明åQšæœ¬æ–‡ç³»JavaEye¾|‘站发布的原创博客文章,未经作者书面许可,严禁ä»ÖM½•¾|‘站转蝲本文åQŒå¦åˆ™å¿…ž®†è¿½½I¶æ³•律责任!

CAS 单点ç™Õd½•安装½W”è®°3
-- 与acegi集成

在我的项目中应用了acigi安全框架,以下是结合yale cas单点ç™Õd½•¾pȝ»Ÿ˜q›è¡Œçš„相关配¾|?
<!-- =========  Acegi as a CAS Client的配¾|?============ -->
<bean id="authenticationProcessingFilter"
class="org.acegisecurity.ui.cas.CasProcessingFilter">
<property name="authenticationManager"
ref="authenticationManager" />
<property name="authenticationFailureUrl"
value="/login.do?login_error=1" />
<property name="defaultTargetUrl" value="/main.do" />
<property name="filterProcessesUrl">
<value>/j_acegi_cas_security_check</value>
</property>
<property name="rememberMeServices" ref="rememberMeServices" />
<property name="exceptionMappings">
<value>
org.acegisecurity.AuthenticationServiceException=/login.do?login_error=user_not_found_error
org.acegisecurity.BadCredentialsException=/login.do?login_error=user_psw_error
org.acegisecurity.concurrent.ConcurrentLoginException=/login.do?login_error=too_many_user_error
org.acegisecurity.DisabledException=/login.do?login_error=disabled_user_error
</value>
</property>
</bean>
<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">
<property name="authenticationEntryPoint">
<ref local="casProcessingFilterEntryPoint"/>
</property>
<property name="accessDeniedHandler">
<bean
class="org.acegisecurity.ui.AccessDeniedHandlerImpl">
<property name="errorPage"
value="/errors/accessDenied.jsp" />
</bean>
</property>
</bean>
<!-- cas config -->
<bean id="casProcessingFilterEntryPoint" class="org.acegisecurity.ui.cas.CasProcessingFilterEntryPoint">
<property name="loginUrl"><value>https://sso.gzps.net:8443/cas/login</value></property>
<property name="serviceProperties"><ref local="serviceProperties"/></property>
</bean>
<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
<property name="providers">
<list>
<ref local="casAuthenticationProvider"/>
</list>
</property>
</bean>
<bean id="casAuthenticationProvider" class="org.acegisecurity.providers.cas.CasAuthenticationProvider">
<property name="casAuthoritiesPopulator"><ref bean="casAuthoritiesPopulator"/></property>
<property name="casProxyDecider"><ref local="casProxyDecider"/></property>
<property name="ticketValidator"><ref local="casProxyTicketValidator"/></property>
<property name="statelessTicketCache"><ref local="statelessTicketCache"/></property>
<property name="key"><value>my_password_for_this_auth_provider_only</value></property>
</bean>
<bean id="casProxyTicketValidator" class="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator">
<property name="casValidate"><value>https://sso.gzps.net:8443/cas/proxyValidate</value></property>
<property name="serviceProperties"><ref local="serviceProperties"/></property>
</bean>
<!--
<bean id="casProxyDecider" class="org.acegisecurity.providers.cas.proxy.AcceptAnyCasProxy" />
-->
<bean id="casProxyDecider" class="org.acegisecurity.providers.cas.proxy.RejectProxyTickets" />
<bean id="serviceProperties" class="org.acegisecurity.ui.cas.ServiceProperties">
<property name="service">
<value>http://localhost:8080/aio/j_acegi_cas_security_check</value>
</property>
<property name="sendRenew">
<value>false</value>
</property>
</bean>
<bean id="statelessTicketCache" class="org.acegisecurity.providers.cas.cache.EhCacheBasedTicketCache">
<property name="cache">
<bean class="org.springframework.cache.ehcache.EhCacheFactoryBean">
<property name="cacheManager">
<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>
</property>
<property name="cacheName" value="userCache"/>
</bean>
</property>
</bean>
<bean id="casAuthoritiesPopulator" class="org.acegisecurity.providers.cas.populator.DaoCasAuthoritiesPopulator">
<property name="userDetailsService"><ref local="userDetailsService"/></property>
</bean>

<bean id="casProcessingFilter" class="org.acegisecurity.ui.cas.CasProcessingFilter">
<property name="authenticationManager"><ref local="authenticationManager"/></property>
<property name="authenticationFailureUrl"><value>/casfailed.jsp</value></property>
<property name="defaultTargetUrl"><value>/</value></property>
<property name="filterProcessesUrl"><value>/j_acegi_cas_security_check</value></property>
</bean>


<!-- ======================================================= -->


本文的讨è®ÞZ¹Ÿå¾ˆç²¾å½©ï¼Œ‹¹è§ˆè®¨è®º>>


JavaEye推荐
中国领先的电子商务网站-淘宝¾|‘招贤纳士,诚聘Java工程å¸?/span>



文章来源:http://lib.javaeye.com/blog/165980

]]>
[导入]CAS 单点ç™Õd½•安装½W”è®°2 -- 配置CAS,讉K—®è‡ªå·±çš„用戯‚¡¨http://www.aygfsteel.com/jacally/articles/186659.htmlLibLibWed, 27 Feb 2008 09:46:00 GMThttp://www.aygfsteel.com/jacally/articles/186659.htmlhttp://www.aygfsteel.com/jacally/comments/186659.htmlhttp://www.aygfsteel.com/jacally/articles/186659.html#Feedback0http://www.aygfsteel.com/jacally/comments/commentRss/186659.htmlhttp://www.aygfsteel.com/jacally/services/trackbacks/186659.html ¾|‘ç«™: JavaEye  作è€? jacally  链接åQ?a style="color: red;">http://lib.javaeye.com/blog/165538  发表旉™—´: 2008òq?2æœ?7æ—?

声明åQšæœ¬æ–‡ç³»JavaEye¾|‘站发布的原创博客文章,未经作者书面许可,严禁ä»ÖM½•¾|‘站转蝲本文åQŒå¦åˆ™å¿…ž®†è¿½½I¶æ³•律责任!

CAS 单点ç™Õd½•安装½W”è®°2


1.修改cas/webapp/WEB-INF/deployerConfigContext.xml
加入以下定义:
	<!-- 数据源定�-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
<!--
passwordEncoder 使用Md5½Ž—法加密
-->
<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">
<constructor-arg value="MD5"/>
</bean>


2.屏蔽原有验证æ–ÒŽ³•:
				<!-- 
<bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
-->


3.加入通过讉K—®æ•°æ®åº“进行验证的handler:
				<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from CORE_USERS where logid=?" />
<property name="passwordEncoder" ref="passwordEncoder"/>
<property name="dataSource" ref="dataSource" />
</bean>


4.修改cas\webapp\WEB-INF\cas.properties,定义数据库连接资æº?本例子是˜qžæŽ¥çš„oracle数据åº?
db.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc\:oracle\:thin\:@192.168.1.1\:1521\:xxxx
db.username=xxxx
db.password=xxxx


5.增加相关jar包到cas\webapp\WEB-INF\lib\目录�
cas-server-support-jdbc-3.2.jar (cas˜qžæŽ¥æ•°æ®åº“的支持åŒ?
ojdbc14.jar (˜qžæŽ¥oracle数据的jdbc驱动½E‹åº)
本文的讨è®ÞZ¹Ÿå¾ˆç²¾å½©ï¼Œ‹¹è§ˆè®¨è®º>>


JavaEye推荐
中国领先的电子商务网站-淘宝¾|‘招贤纳士,诚聘Java工程å¸?/span>



文章来源:http://lib.javaeye.com/blog/165538

]]>
[导入]CAS 单点ç™Õd½•安装½W”è®°1 -- 基本讄¡½®ä¸Žæ•°å­—证书的安装http://www.aygfsteel.com/jacally/articles/186660.htmlLibLibTue, 26 Feb 2008 08:35:00 GMThttp://www.aygfsteel.com/jacally/articles/186660.htmlhttp://www.aygfsteel.com/jacally/comments/186660.htmlhttp://www.aygfsteel.com/jacally/articles/186660.html#Feedback0http://www.aygfsteel.com/jacally/comments/commentRss/186660.htmlhttp://www.aygfsteel.com/jacally/services/trackbacks/186660.html ¾|‘ç«™: JavaEye  作è€? jacally  链接åQ?a style="color: red;">http://lib.javaeye.com/blog/165196  发表旉™—´: 2008òq?2æœ?6æ—?

声明åQšæœ¬æ–‡ç³»JavaEye¾|‘站发布的原创博客文章,未经作者书面许可,严禁ä»ÖM½•¾|‘站转蝲本文åQŒå¦åˆ™å¿…ž®†è¿½½I¶æ³•律责任!

安装JA-SIG SSO¾pȝ»Ÿ½W”è®°1

(关于配置讉K—®æ•°æ®åº“的用户表见安装JA-SIG SSO¾pȝ»Ÿ½W”è®°2)
(与acegi¾l“合配置è§?a target="_blank">安装JA-SIG SSO¾pȝ»Ÿ½W”è®°3)
(ASP.NET client端的讄¡½®è§?a target="_blank">安装JA-SIG SSO¾pȝ»Ÿ½W”è®°4)

ps:配置中的文äšg路径æ ÒŽ®è‡ªå·±çš„实际情å†ëŠš„讑֮š

1.安装JA-SIG �TOMCAT;
JA-SIG下蝲地址:
http://www.ja-sig.org/products/cas/downloads/index.html

2.生成数字证书,见批处理文äšg"cas 生成数字证书.bat";

3.配置Tomcat的HTTPS服务,修改server.xml
		<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:/Documents and Settings/Administrator/.keystore" keystorePass="changeit"
truststoreFile="D:/Java/jdk1.6.0_02/jre/lib/security/cacerts"
clientAuth="false" sslProtocol="TLS"/>


4.导出 SERVER 的证书,用来¾l™æ‰€æœ‰éœ€è¦ç”¨åˆ°çš„客户端导å…?è§?导出 cas 数字证书.bat"

5.在客æˆïL«¯çš?JVM 里导入信ä»Èš„ SERVER 的证ä¹?( æ ÒŽ®æƒ…况有可能需要管理员权限 ),è§?导入 cas 证书.bat"åQ?

5.修改客户端服务程åº?加入cas˜q‡æ×oå™?修改web.xml
	<!-- CAS -->
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://sso.gzps.net:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://sso.gzps.net:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>88.148.29.54:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


本文的讨è®ÞZ¹Ÿå¾ˆç²¾å½©ï¼Œ‹¹è§ˆè®¨è®º>>


JavaEye推荐
中国领先的电子商务网站-淘宝¾|‘招贤纳士,诚聘Java工程å¸?/span>



文章来源:http://lib.javaeye.com/blog/165196

]]>
配置Red5详解(è½?http://www.aygfsteel.com/jacally/articles/95729.htmlLibLibWed, 24 Jan 2007 06:14:00 GMThttp://www.aygfsteel.com/jacally/articles/95729.htmlhttp://www.aygfsteel.com/jacally/comments/95729.htmlhttp://www.aygfsteel.com/jacally/articles/95729.html#Feedback0http://www.aygfsteel.com/jacally/comments/commentRss/95729.htmlhttp://www.aygfsteel.com/jacally/services/trackbacks/95729.html RED5 ž®†æ‰€æœ‰çš„应用½E‹åºéƒ½æ”¾åœ¨RED5根目录下çš?webapps"ç›®å½•ã€‚ä½ éœ€è¦äØ“æ‰€åˆ›å¾çš„ç¨‹åºåœ¨webapps目录下添加相应的目录。在你的应用½E‹åºç›®å½•里应该有一个名ä¸?WEB-INF"的目录,用来存放你的½E‹åºçš„配¾|®æ–‡ä»¶ã€‚在"doc/templates/myapp"目录有一个模板,可以用来帮你完成建立½E‹åºçš„初始工作ã€?br />RED5启动的时候,åœ?webapps"目录的程序文仉™ƒ½æ˜¯æœç´?WEB-INF"的目录下的配¾|®æ–‡ä»¶æ¥å®Œæˆé…ç½®çš„ã€?br />最主要的配¾|®æ–‡ä»¶æ˜¯"web.xml"。这个文仉™‡ŒåŒ…含了以下参敎ͼš
globalScopeåQšæŒ‡å®šå…¨å±€ä½œç”¨èŒƒå›´
<context-param>
    <param-name>globalScope</param-name>
    <param-value>default</param-value>
</context-param>
contextConfigLocationåQšæŒ‡å®šé…¾|®handler的文件的位置。这些配¾|®æ–‡ä»¶æ˜qîCº†å®¢æˆ·ç«¯åŠ å…?¼›Õd¼€çš„动作触发后调用的处理方法,作用范围。在描述的时候可以ä‹É用通配½W¦æ¥æè¿°å¤šä¸ªæ–‡äšgåQ?br /><context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/red5-*.xml</param-value>
</context-param>
locatorFactorySelectoråQšç¨‹åºçš„æ ¹ä¸Šä¸‹æ–‡åQŒé€šå¸¸æ˜?red5.xml"
<context-param>
    <param-name>locatorFactorySelector</param-name>
    <param-value>red5.xml</param-value>
</context-param>
parentContextKeyåQšçˆ¶¾U§ä¸Šä¸‹æ–‡åQŒé€šå¸¸æ˜?default.context"
<context-param>
    <param-name>parentContextKey</param-name>
    <param-value>default.context</param-value>
</context-param>
log4jConfigLocationåQšæ—¥å¿—é…¾|®æ–‡ä»¶çš„位置
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
webAppRootKeyåQšç¨‹åºçš„全局唯一å?br /><context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>/myapp</param-value>
</context-param>
对于每一个Handler配置文äšg最ž®‘需要有三个bean
ContextåQšç”¨æ¥åª„ž®„èµ\径到某个作用范围、搜索服务和HandleråQŒå®ƒæœ‰ä¸€ä¸ªä¿ç•™çš„名字"web.context"ã€?å…‰™»˜è®¤çš„¾cÖMØ“org.red5.server.Context
<bean id="web.context" class="org.red5.server.Context"
     autowire="byType" />
对于没有一个应用程序只应该有一个ContextåQŒä½†æ˜¯åŒä¸€ä¸ªContext可以被多个作用范围共äº?br />ScopeåQšæ¯ä¸€ä¸ªåº”ç”¨ç¨‹åºæœ€ž®‘有一个作用范å›ß_¼Œç”¨æ¥ž®†handler˜qžæŽ¥åˆ°context和服务器。作用范围可以徏立一‹‚‰| ‘åQŒæ¯ä¸€ä¸ªå®¢æˆïL«¯˜qžæŽ¥åˆ°æ ‘上的一个节点,而共享对象存在于作用范围里。可以把作用范围看作是聊天室或者程序实例。默认的作用范围通常是web.scopeåQŒä¸˜q‡è¿™åå­—是可以ä“Q意取的ã€?br />对于bean有以下属性:
serveråQšä¸Žå…¨å±€æœåŠ¡å™?red5.server"相关ã€?br />parentåQšæŒ‡å®šå½“å‰ä½œç”¨èŒƒå›´çš„çˆ¶èŒƒå›ß_¼Œé€šå¸¸æ˜?global.scope"
contextåQšå½“前作用范围的服务器上下文åQŒä¸€èˆ¬æŒ‡å®šäØ“"web.context"
handleråQšå¯¹åº”当前作用范围的handler
contextPathåQšç”¨æ¥è¿žæŽ¥åˆ°å½“前作用范围的èµ\å¾?br />virtualHostsåQšä¸€ä¸ªä¸»æœºåæˆ–IP的列表,用来描述虚拟ä¸ÀLœºçš„位¾|®ï¼Œåˆ—表™å¹ç›®ä¹‹é—´ç”¨é€—号分隔开ã€?br /><bean id="web.scope" class="org.red5.server.WebScope"
     init-method="register">
    <property name="server" ref="red5.server" />
    <property name="parent" ref="global.scope" />
    <property name="context" ref="web.context" />
    <property name="handler" ref="web.handler" />
    <property name="contextPath" value="/myapp" />
    <property name="virtualHosts" value="localhost, 127.0.0.1" />
</bean>
ä¸ÞZº†åº”用½E‹åºé…ç½®æ–¹ä¾¿çš„需要,可以ž®?contextPath"å’?virtualHosts"攑ֈ°å¦å¤–一个单独的属性文仉™‡Œè¾¹ï¼Œè€Œåœ¨˜q™é‡Œä½¿ç”¨å˜é‡æ¥è¡¨½Cºï¼Œä¸ºæ­¤éœ€è¦æ·»åŠ ä¸€ä¸ªç‰¹åˆ«çš„bean来指定属性文件的位置ã€?br /><bean id="placeholderConfig"     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="/WEB-INF/red5-web.properties" />
</bean>
假设在属性文件red5-web.properties里有如下的数据:
webapp.contextPath=/myapp
  webapp.virtualHosts=localhost, 127.0.0.1
则上边的beançš?contextPath"å’?virtualHosts"属性即可ä‹É用变量来指定å€?br />  <property name="contextPath" value="http://www.ruyiblog.com/${webapp.contextPath}" />
   <property name="virtualHosts" value="http://www.ruyiblog.com/${webapp.virtualHosts}" />
对于"contextPath"å¯ä»¥è§†äØ“æ˜¯ä¸€ä¸ªæ ¹ä½œç”¨èŒƒå›´ã€‚ä½ å¯ä»¥åœ¨é…¾|®å¥½çš?contextPath"路径后边随意æ·ÕdŠ å…¶ä»–çš„èµ\径,而连接到˜q™äº›è·¯å¾„的客æˆïL«¯ž®†åŠ¨æ€åˆ›å»ºå¦å¤–çš„ä½œç”¨èŒƒå›´åQŒè¿™äº›ä½œç”¨èŒƒå›´ä‹É用的是同æ ïLš„handleråQŒä½†æ‹¥æœ‰è‡ªå·±çš„属性、共享对象和‹zÕdЍ‹¹ã€?br />handleråQšæ¯ä¸€ä¸ªä¸Šä¸‹æ–‡éœ€è¦ä¸€ä¸ªhandler来响应用戯‚¿žæŽ¥ã€ç¦»å¼€ä½œç”¨èŒƒå›´æ—¶çš„动作åQŒhandler实现了很多方法,用户可以调用以达到特定的目的。这个handler必须实现"org.red5.server.api.IScopeHandler"接口åQŒå½“焉™’ˆå¯¹å…±äº«å¯¹è±¡å’Œ‹¹çš„讉K—®˜q˜åº”该实现其他的接口ã€?br />åœ?org.red5.server.adapter.ApplicationAdapter"可以扑ֈ°ä¸€ä¸ªèƒ½å¤Ÿç”¨ä½œåŸº¾cȝš„例子åQŒåŒæ—¶è¿˜åº”该多多参照文档以得到更多细节ã€?br />某个作用范围的handler可以如下指定åQ?br /><bean id="web.handler"
     class="the.path.to.my.Application"
     singleton="true" />
其中"id"属性是上边定义的作用范围里指定的ã€?br />如果你不需要ä“Q何服务端的逻辑处理åQŒå¯ä»¥ä‹É用Red5默认提供的handler
<bean id="web.handler"
     class="org.red5.server.adapter.ApplicationAdapter"
     singleton="true" />
handler的例�br />  package the.path.to.my;
  import org.red5.server.adapter.ApplicationAdapter;
  public class Application extends ApplicationAdapter {
    public Double add(Double a, Double b){
      return a + b;
    }
  }
˜q™é‡Œå‡è®¾ä½¿ç”¨ä¸Šè¾¹çš„配¾|®ï¼Œåˆ™åœ¨å®¢æˆ·ç«¯è°ƒç”¨çš„æ—¶å€™ä‹É用以下方å¼?br />  nc = new NetConnection();
  nc.connect("rtmp://localhost/myapp");
  nc.onResult = function(obj) {
    trace("The result is " + obj);
  }
  nc.call("add", nc, 1, 2);
˜q”回因该有输出:
The result is 3

]]>
subversion & apache 权限控制 [原]http://www.aygfsteel.com/jacally/articles/95357.htmlLibLibMon, 22 Jan 2007 08:14:00 GMThttp://www.aygfsteel.com/jacally/articles/95357.htmlhttp://www.aygfsteel.com/jacally/comments/95357.htmlhttp://www.aygfsteel.com/jacally/articles/95357.html#Feedback0http://www.aygfsteel.com/jacally/comments/commentRss/95357.htmlhttp://www.aygfsteel.com/jacally/services/trackbacks/95357.html使用apache命ä×o创徏讉K—®ç”¨æˆ·åŠå£ä»?
bin\htpasswd  -c passwd xxx

讉K—®½{–略控制文äšg
accesspolicy -> apache\
[groups]
#人员权限分组
administrator = admin
code-developers = lib,zhuj,huj,zhuyd,liuy,panggc,shaohy
core-developers = lib,zhuj
testers = zhangyc,zhour
deployers = zhangyc,lib

[/]
#所有目录的è¯Õd–权限
@administrator = rw
@code-developers = r
@core-developers = r
@testers = r
@deployers = r

[code:/src]
#code库中的代码的è¯Õd–与更新权é™?br />@code-developers = rw

[code:/test-src]
#code库中的测试代码的è¯Õd–与更新权é™?br />@code-developers = rw

[code:/resource]
#资源文äšg与配¾|®æ–‡ä»¶çš„è¯Õd–与更新权é™?br />@deployers = rw

[code:/web/biz]
#业务JSP™åµé¢ä»£ç çš„读取与更新权限
@code-developers = rw

[code:/web/common]
#公共模块JSP™åµé¢ä»£ç çš„读取与更新权限
@core-developers = rw

[code:/web/sysconfig]
#¾pȝ»Ÿé…ç½®JSP™åµé¢ä»£ç çš„读取与更新权限
@core-developers = rw

修改apache配置文äšg:httpd.conf
增加以下内容:
<Location /svn>
DAV svn
SVNParentPath E:\SVN
AuthType Basic
AuthName "Subversion repository"
AuthUserFile passwd
AuthzSVNAccessFile accesspolicy
Satisfy Any
Require valid-user
</Location>

æ³?如果有中文èµ\å¾?ž®†è¯¥æ–‡äšg转换为UTF-8¾~–码格式.

参考文�http://www.subversion.org.cn/index.php?option=com_content&task=view&id=78&Itemid=91



]]>
JBoss性能优化åQšå†…存紧张的问题¾lˆäºŽè§£å†³äº?/title><link>http://www.aygfsteel.com/jacally/articles/95356.html</link><dc:creator>Lib</dc:creator><author>Lib</author><pubDate>Mon, 22 Jan 2007 08:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/jacally/articles/95356.html</guid><wfw:comment>http://www.aygfsteel.com/jacally/comments/95356.html</wfw:comment><comments>http://www.aygfsteel.com/jacally/articles/95356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jacally/comments/commentRss/95356.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jacally/services/trackbacks/95356.html</trackback:ping><description><![CDATA[昨天查了一天的资料åQŒè¿æ°”不错,收获不小åQŒè§£å†³äº†ä¸€ä¸ªè€å¤§éšùN—®é¢˜ï¼šJBoss内存紧张的问题ã€?br />˜q™æ˜¯ä¸€ä¸ªå›°æ‰îCº†æˆ‘两òq´æ•´çš„问题,ž®±æ˜¯ä»Žå‰òq´è¿™ä¸ªæ—¶å€™ï¼Œç”¨JBoss 3.2.1架站以来åQŒå§‹¾lˆæ˜¯ä¸€ä¸ªå¤§é—®é¢˜ã€‚不大的站点åQ?G的内存都不够用,¾lå¸¸è¦æ¶ˆè€?00Mb的交换内存(swap)ã€?br />原来是自å·ÞqŠ¯äº†éžå¸æ€½Ž¾U§çš„错误åQŒä¸æ‡‚JAVA_OPTS各参数的含义造成的ã€?br />之前的JAVA_OPTSæ˜?-Xms 520m -Xmx 1220m -Xss 15120k +XX:AggressiveHeap<br />˜q™ä¸ªJAVA_OPTS犯了2个致命的错误åQ?br />1. +XX:AggressiveHeap会ä‹Éå¾?Xms 1220m没有意义。这个参数让jvm忽略Xmx参数åQŒç–¯ç‹‚地吃完一个G物理内存åQŒå†åƒå°½ä¸€ä¸ªGçš„swapã€?br />另外Xmxä½œäØ“å…è®¸jvm使用的最大内存数量,不应该超˜q‡ç‰©ç†å†…存的90åQ…ã€?br />而之所以ä‹É用了˜q™ä¸ªå‚æ•°åQŒæ˜¯å› äؓ不加的话åQŒJBoss会在˜qè¡Œä¸€å¤©å·¦å³çš„æ—‰™—´åŽè¿…速崩溃,上机课是åQŒç”šè‡›_‡ºçŽ°è¿‡åŠä¸ªž®æ—¶ž®±å´©æºƒçš„æƒ…况ã€?br />之所以要用这个参敎ͼŒç”¨swap支持服务器运行,是因为犯了下面的错误åQ?br />2. -Xss 15120k <br />˜q™ä‹Éå¾—JBoss每增加一个线½E‹ï¼ˆthread)ž®×ƒ¼šç«‹å³æ¶ˆè€?5M内存åQŒè€Œæœ€ä½›_€¼åº”该是128K,默认值好像是512k.<br />˜q™å°±æ˜¯JBoss刚启动时åQŒè¿˜æœ?00Mb内存富余åQŒä½†ä¼šåœ¨ä¸€ä¸ªå°æ—¶å†…˜q…é€Ÿç”¨å®Œï¼Œå› äØ“æœåŠ¡å™¨çš„threads在迅速增加。前3天,每天都多å?0Mb左右的swap.在第四天开始稳定下来。今òq´æ˜¥èŠ‚åœ¨å¤–åº¦å‡ï¼Œè§‚å¯ŸåˆîCº†˜q™ä¸ªçŽ°è±¡åQŒå´ä¸ç†è§£å…¶åŽŸå› åQšæœåŠ¡å™¨åœ¨çº¿½E‹åˆ°è¾?00之后åQŒä¸€èˆ¬ä¸å†å¢žåŠ æ–°çš„çº¿½E‹ï¼Œæ–°å¢žåŠ çš„åœ¨ç”¨å®Œä¹‹åŽï¼Œä¼šè¢«˜q…速destroyåQ??è¤‚çŽ«å“ªè¯–å¬‰ä¸åŽ¥æ¨Ÿæ•ï¼²è™ÆD€?旁诖航谄诩洌?é„„æ–“æ¤?衉K«Ÿ?1.25-2.10所使用的线½E‹åŸºæœ¬æ˜¯1.21-1.23创徏的,因此没有再消耗新的内存。服务器持箋˜qè¡Œæ—‰™—´åQŒä¹Ÿå› æ­¤å¤§å¤§­‘…乎æˆ?天的预期åQŒåˆ°è¾¾äº†20天ã€?br />昨天所作的修改åQ?br />1.修改JAVA_OPTS,åŽÀLމ+XX:AggressiveHeapåQŒä¿®æ”¹Xss。现在的JAVA_OPTS为:<br />åQXms 520m -Xmx 900m -Xss 128k<br />2.修改deploy/jbossweb-tomcat55.sar/service.xml<br />ž®†maxThreadsæ ÒŽ®ç›®å‰çš„访问量由默认的250é™äØ“75åQŒåƈ使用jboss 4默认未写在标准service.xml里面而jboss 3写入了的2个参æ•? maxSparseThreads=55åQŒminSparseThreads=25<br />3.修改了oracle-ds.xmlž®†æœ€å¤§è¿žæŽ¥æ•°æœ?50é™äØ“50.<br />4.åŽÀLŽ‰äº†ä¸€äº›ä¸ç”¨çš„æœåŠ¡ã€?<br /><img src ="http://www.aygfsteel.com/jacally/aggbug/95356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jacally/" target="_blank">Lib</a> 2007-01-22 16:12 <a href="http://www.aygfsteel.com/jacally/articles/95356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">¾äÈÝÊÐ</a>| <a href="http://" target="_blank">´óͬÊÐ</a>| <a href="http://" target="_blank">ÎäÍþÊÐ</a>| <a href="http://" target="_blank">ÕżҽçÊÐ</a>| <a href="http://" target="_blank">ÎäÐûÏØ</a>| <a href="http://" target="_blank">°²¼ªÏØ</a>| <a href="http://" target="_blank">Îä°²ÊÐ</a>| <a href="http://" target="_blank">ÁúÖÝÏØ</a>| <a href="http://" target="_blank">½­»ª</a>| <a href="http://" target="_blank">ÏçÄþÏØ</a>| <a href="http://" target="_blank">ÖØÇìÊÐ</a>| <a href="http://" target="_blank">¼ªÁÖÊ¡</a>| <a href="http://" target="_blank">ÆëºÓÏØ</a>| <a href="http://" target="_blank">ºÕÕÂÏØ</a>| <a href="http://" target="_blank">ÐÞÎÄÏØ</a>| <a href="http://" target="_blank">ĪÁ¦</a>| <a href="http://" target="_blank">¾²º£ÏØ</a>| <a href="http://" target="_blank">ËÞÖÝÊÐ</a>| <a href="http://" target="_blank">ãÉÐÐÇø</a>| <a href="http://" target="_blank">°²ÔÀÏØ</a>| <a href="http://" target="_blank">ãèÂÞÊÐ</a>| <a href="http://" target="_blank">ÇçÂ¡ÏØ</a>| <a href="http://" target="_blank">ÀæÊ÷ÏØ</a>| <a href="http://" target="_blank">ÓñÊ÷ÏØ</a>| <a href="http://" target="_blank">Ûº£ÏØ</a>| <a href="http://" target="_blank">ÓÀÐËÏØ</a>| <a href="http://" target="_blank">ÉîÔóÏØ</a>| <a href="http://" target="_blank">ãëÉÏÏØ</a>| <a href="http://" target="_blank">°¢³ÇÊÐ</a>| <a href="http://" target="_blank">°²Î÷ÏØ</a>| <a href="http://" target="_blank">¹ãµÂÏØ</a>| <a href="http://" target="_blank">¼ÎÓø¹ØÊÐ</a>| <a href="http://" target="_blank">ÌÀÒõÏØ</a>| <a href="http://" target="_blank">Î÷»ªÏØ</a>| <a href="http://" target="_blank">ÐÃÖÝÊÐ</a>| <a href="http://" target="_blank">×ÊÐËÊÐ</a>| <a href="http://" target="_blank">ãë´¨ÏØ</a>| <a href="http://" target="_blank">¶ÀÉ½ÏØ</a>| <a href="http://" target="_blank">¿íµé</a>| <a href="http://" target="_blank">ÜÆ½­</a>| <a href="http://" target="_blank">ÔÆÁÖÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>