锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓嬮潰閰嶇疆GlassFish v3錛?/p>
閫氳繃嫻忚鍣ㄨ繘鍏lassFish v3鐨刟dmin console錛屽睍寮configuration->network config->network listeners錛岄〉闈細鍒楀嚭鐜版湁鐨勬墍鏈夌洃鍚殑绔彛銆備緥濡傞粯璁ょ殑http-listener1鐩戝惉8080錛宧ttp-listener2鐩戝惉8181錛宎dmin-listener鐩戝惉4848銆?br />鍒氭墠璇翠簡涓轟簡涓嶅獎鍝?Glassfish鐨勫崟鐙闂紝榪欓噷鎴戜滑涓嶇敤8080錛屾垜浠彲浠ユ柊寤轟竴涓狶istener,闄や簡绔彛浠ュ鍏跺畠閮戒竴鏍?濡傚浘 閰嶇疆deploy/jboss-web.deployer/server.xml鏂囦歡 . minSpareThread錛氭寚“鍚姩浠ュ悗錛屾繪槸淇濇寔璇ユ暟閲忕殑綰跨▼絀洪棽絳夊緟”錛涜緗瘮棰勬湡璐熻澆澶?font face="Times New Roman">25%銆?/font> maxSpareThread錛氭寚“濡傛灉瓚呰繃浜?/font>minSpareThread錛岀劧鍚庢繪槸淇濇寔璇ユ暟閲忕殑綰跨▼絀洪棽絳夊緟”錛涜緗瘮棰勬湡璐熻澆澶?font face="Times New Roman">25%銆?/font> 鍏朵腑涓昏淇敼涓や釜鍙傛暟maxThreads鍜宎cceptCount鍊箋傚鍔爉axThreads錛屽噺灝慳cceptCount鍊兼湁鍒╃緝鐭郴緇熺殑鍝嶅簲鏃墮棿銆備絾鏄痬axThreads鍜宎cceptCount鐨勬誨拰鏈楂樺間笉鑳借秴榪?000錛岃屼笖maxThreads榪囧ぇ浼氬鍔燙PU鍜屽唴瀛樻秷鑰楋紝鏁呬綆閰嶇疆鐢ㄦ埛鍙氳繃闄嶄綆maxThreads騫跺悓鏃跺澶cceptCount鍊兼潵淇濊瘉緋葷粺鐨勭ǔ瀹氥?/p>
涓嬭〃緗楀垪鍑轟簡鍦ㄤ笉鍚屽茍鍙戞儏鍐典笅jboss鍙傛暟涓庡茍鍙戝湪綰跨殑涓鑸叧緋匯?br />
騫跺彂鏁?/p>
鏈嶅姟鍣ㄥ唴瀛?/p>
jboss鍙傛暟 浜?璋冩暣 jvm鍙傛暟 A錛欽VM鍚姩鍙傛暟鍏卞垎涓轟笁綾伙細 涓嬮潰鏄釜渚嬪瓙,璇鋒牴鎹疄闄呮儏鍐佃繘琛屼慨鏀?淇敼run.conf鏂囦歡涓殑濡備笅鍐呭錛?/font>
鎯寵涓ゅ彴(鎴朜鍙?鏈哄櫒鐩鎬簰閫氫俊錛屽厛瑕佽緗畠浠箣闂寸殑Host鏂囦歡銆?br />姣忎竴鍙版満鍣ㄥ垎鍒墽琛屽涓嬪懡浠?
sudo vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.23.10.237 puppet-server.noah.blogjava.net
#涓婇潰鍙兘鏄墦寮榪欎釜鏂囦歡閲岄粯璁ょ殑錛屼笉鐢ㄧ錛岀洿鎺ュ湪涓嬮潰鍔燼gent鐨刬p灝卞彲浠ヤ簡,鏈夊灝戝姞澶氬皯銆?/span>
10.52.27.71 agent001.noah-test.net
10.52.27.72 agent002.noah-test.net
10.52.27.73 agent003.noah-test.net
鎺ヤ笅鏉ュ洖鍒癮gent绔紝閰嶇疆puppet 鐨勯厤緗枃浠訛紝鎵ц濡備笅鍛戒護
sudo vi /etc/puppetlabs/puppet/puppet.conf
#榪欎釜certname灝辨槸涓婇潰host閲岄潰鐨勫悕瀛?/span>
certname = agent001.noah-test.net
#server 灝辨槸puppet鐨剆erver鐨勫湴鍧
server = puppet-server.noah.blogjava.net
environment = production
runinterval = 1h
鐒跺悗鍦╝gent绔紝鎵ц濡備笅鍛戒護錛屽悜server绔敵璇瘋瘉涔?br />
sudo /opt/puppetlabs/bin/puppet agent --test
Info: Creating a new SSL key for agent01.noah-test
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Exiting; no certificate found and waitforcert is disabled
璇佹槑錛岀敵璇鋒垚鍔燂紝絳夊緟server绔悓鎰忋傝繖鏃跺彲浠ヨ漿鍒皊erver绔紝鎵ц濡備笅鍛戒護鏌ョ湅濡備簺鏈哄櫒瑕佺敵璇瘋瘉涔?
sudo /opt/puppetlabs/bin/puppet cert list --all
sudo /opt/puppetlabs/bin/puppet cert sign agent001.noah-test.net
涔熷彲浠ョ洿鎺ュ湪sgin 鍚庨潰鍔?"--all",榪涜鍏ㄩ儴瀹℃壒銆?br />
瀹℃壒瀹屾垚鍚庯紝鍐嶅洖鍒癮gent绔紝鎵ц鍚屾牱鐨勫懡浠?br />
sudo /opt/puppetlabs/bin/puppet agent --test
濡備笅鏄劇ず鐨勫叏鏄被浼煎涓嬬豢鑹茬殑淇℃伅錛岃瘉鏄庡畠浠箣闂寸殑閫氫俊宸茬粡寤虹珛鎴愬姛
闂姹囨伙細
]]>
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt update
sudo dpkg -i puppetlabs-release-pc1-wily.deb
sudo apt update
sudo dpkg -i puppetlabs-release-pc1-trusty.deb
sudo apt-get update
sudo dpkg -i puppetlabs-release-pc1-precise.deb
sudo apt-get update
sudo dpkg -i puppetlabs-release-pc1-jessie.deb
sudo apt-get update
sudo dpkg -i puppetlabs-release-pc1-wheezy.deb
sudo apt-get update
濡傛灉閬囧埌榪欎釜閿欒錛屽簲璇ユ槸浣犵殑rpm娌℃湁璁劇疆浠g悊錛岃鐪嬫枃绔犵粨灝鵑敊璇眹鎬?br />curl: (7) couldn't connect to host
鎺ヤ笅鏉ョ敤YUM瀹夎
閬囧埌榪欎釜閿欒鏄痀UM娌℃湁璁劇疆浠g悊錛屾枃绔犵粨灝鵑棶棰樻眹鎬?
鎺ヤ笅鏉ュ氨鍙互姝e父鍚姩浜?br />
鍙互閫氳繃濡備笅鍛戒護鏌ョ湅鏄惁鍚姩鎴愬姛
榛樿瀹冧細鍒嗛厤2G鍐呭瓨錛岄渶瑕佽皟鏁寸殑璇濓紝鍙互鍦ㄨ繖閲?br />
鎺ヤ笅鏉ュ湪鍙﹀涓鍙板櫒涓婂畨瑁卆gent
鐢ㄧ浉鍚岀殑鏂規硶鍏堜笅杞借祫婧愬寘錛宻udo rpm xxxx,絳?銆?br />鐒跺悗錛屽畨瑁卆gent
鍦ㄥ畨瑁呰繃紼嬩腑錛屽鏋淵um涓嶈兘涓嬭澆鐨勮瘽錛屽彲鑳芥病鏈夎緗唬鐞嗭紝
]]>
鏈夌殑鏃跺欒繖涓柟娉曠殑榪斿洖鍊兼槸閫氳繃鍙傛暟榪斿洖鐨勩傛瘮濡傜被浼間簬榪欐牱錛?br />
//do something
map.put("response","success");
}
@Override
public Void answer( InvocationOnMock invocation )
throws Throwable {
Object[] args = invocation.getArguments();
Map arg1 = (Map)args[0];
arg1.put("response", "failed");
return null;
}
} ) );
榪樻湁涓縐嶇敤娉曪紝榪斿洖鍙傛暟鍊煎仛涓哄嚱鏁拌繑鍥炲?br />
鍦ㄨ繖涓被涓繕鏈夊叾浠栫殑涓浜涚被浼兼柟娉?/span>
returnsSecondArg()
]]>
@SessionScoped
public class SampleBean {
public int getLuckyNumber() { }
public void setLuckyNumber(int value) { }
public String login() {
if () return "success"; else return "error";
}
}
<h:commandButton value="press me" action="#{bean1.login}"/>
2.瓚呴摼鎺?br />
<f:param name="scmNo" value="#{warr.project_no}"/>
<f:param name="custNo" value="#{warr.cust_no}"/>
<f:param name="custName" value="#{warr.cust_name}"/>
<h:outputText value="#{warr.accrued_amt}">
<f:convertNumber currencySymbol="$" type="currency" />
</h:outputText>
</h:link>
<f:viewParam name="scmNo" value="#{custVM.scmNo}" />
<f:viewParam name="custNo" value="#{custVM.custNo}" />
<f:viewParam name="custName" value="#{custVM.custName}" />
</f:metadata>
@PostConstruct
public void init() {
Calendar now = Calendar.getInstance();
date = now.getTime();
monthItems = new ArrayList<SelectItem>();
try {
List<Date> monthList = amoritizateService.getMonthList();
for(Date month:monthList){
monthItems.add(new SelectItem(month, DateUtil.format(month, "yyyy - MM")));
}
} catch (Exception e) {
LOG.error("ERROR!",e);
}
}
<f:selectItems value="#{amoritizateVM.monthItems}"></f:selectItems>
</p:selectOneMenu>
鍙瀹炵幇瀹冪殑鎺ュ彛錛屽畠浼氳嚜鍔ㄥ畬鎴愯漿鎹紝榪樻槸寰堟柟渚跨殑
*/
@FacesConverter("monthItemConverter")
public class MonthItemConverter implements Converter {
private static final Logger LOG = LoggerFactory.getLogger(MonthItemConverter.class);
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
return DateUtil.parseDate(arg2);
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
return DateUtil.format((Date)arg2);
}
}
4.琛ㄥ崟鎻愪氦鐨勮瘽錛岀敤榪欎釜
]]>
]]>
棣栧厛涓嬭澆mod_jk.so錛?br />windows:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/
Linux:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.21/
涓嬭澆鍚庯紝濡傛灉鍚嶅瓧涓嶄竴鏍鳳紝瑕佹敼鎴愬拰榪欎釜鍚嶅瓧涓鏍風殑錛岀劧鍚庢斁緗湪apache鐨刴odules鐩綍涓?br />鐒跺悗鍦╝pache鐨刢onf鐩綍鏂板緩涓涓獁orkers.properties鏂囦歡錛屽唴瀹瑰涓嬶細
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=127.0.0.1
# 濂藉浜洪兘鐢?080绔彛
# 浣嗗鏋滅敤浜嗙殑璇濓紝灝變細琚玜pache鍗犵敤錛?br />
# 榪欐牱灝辨棤娉曠洿鎺ヨ闂瓽lassfish浜?br />
worker.worker1.port=9090
worker.worker1.lbfactor=1
worker.worker1.cachesize=128
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
#worker.worker1.reclycle_timeout=300
<IfModule !mod_jk>
LoadModule jk_module "modules/mod_jk.so"
</IfModule>
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkShmFile logs/mod_jk.shm
JkMount /*.jsp worker1
JkMount /*.action worker1
JkMount /*.do worker1
鐒跺悗寤烘垚鍔熷悗錛岀偣鍑昏繘鍏ワ紝鍕鵑変笂 JK Listener銆?br />
榪欐牱浠ユ潵錛屾墍鏈夋湁鍏沖姩鎬佽В鏋愮殑涓浜涜姹傚氨浼氳漿緇橤lassfish澶勭悊浜嗐?br />
]]>
<Connector
port="8080"
address="0.0.0.0"
maxThreads="1600"
minSpareThreads="100"
maxSpareThreads="250"
emptySessionPath="false"
enableLookups="false"
redirectPort="8443"
acceptCount="800"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"
/>
maxThreads錛氳〃紺烘渶澶氬悓鏃跺鐞嗙殑榪炴帴鏁般傚簲璇ュ皢綰跨▼鏁幫紙鏈澶х嚎紼嬫暟錛夎緗瘮鏈澶ч鏈熻礋杞斤紙鍚屾椂騫跺彂鐨勭偣鍑伙級澶?font face="Times New Roman">25%錛堢粡楠岃鍒欙級銆?br />
acceptCount錛氬綋鍚屾椂榪炴帴鐨勪漢鏁拌揪鍒癿axThreads鏃訛紝榪樺彲浠ユ帴鏀舵帓闃熺殑榪炴帴銆?/p>
maxThreads
acceptCount
50浠ヤ笅
2G
256
800
50-300
4G
600
1024
300-800
8G
1024
1528
800-1000
8G
1024
2048
1000-1200
12G
1526
2048
1200-1500
16G
2048
2048
鍏朵竴鏄爣鍑嗗弬鏁幫紙-錛夛紝鎵鏈夌殑JVM瀹炵幇閮藉繀欏誨疄鐜拌繖浜涘弬鏁扮殑鍔熻兘錛岃屼笖鍚戝悗鍏煎錛?br />
鍏朵簩鏄潪鏍囧噯鍙傛暟錛?X錛夛紝鎸囩殑鏄疛VM搴曞眰鐨勪竴浜涢厤緗弬鏁幫紝榪欎簺鍙傛暟鍦ㄤ竴鑸紑鍙戜腑榛樿鍗沖彲錛屼笉闇瑕佷換浣曢厤緗備絾鏄湪鐢熶駭鐜涓紝騫朵笉淇濊瘉鎵鏈塲vm瀹炵幇閮芥弧瓚籌紝鎵浠ヤ負浜嗘彁楂樻ц兘錛屽線寰闇瑕佽皟鏁磋繖浜涘弬鏁幫紝浠ユ眰緋葷粺杈懼埌鏈浣蟲ц兘銆傚彟澶栬繖浜涘弬鏁頒笉淇濊瘉鍚戝悗鍏煎錛屼篃鍗蟲槸璇?#8220;濡傛湁鍙樻洿錛屾仌涓嶅湪鍚庣畫鐗堟湰鐨凧DK閫氱煡”錛堣繖鏄畼緗戜笂鐨勫師璇濓級錛?br />
鍏朵笁鏄潪Stable鍙傛暟錛?XX錛夛紝榪欑被鍙傛暟鍦╦vm涓槸涓嶇ǔ瀹氱殑錛屼笉閫傚悎鏃ュ父浣跨敤鐨勶紝鍚庣畫涔熸槸鍙兘浼氬湪娌℃湁閫氱煡鐨勬儏鍐典笅灝辯洿鎺ュ彇娑堜簡錛岄渶瑕佹厧閲嶄嬌鐢ㄣ?br />
B錛氳?strong>JVM 鍐呭瓨鍙堝彲鍒嗕負涓変釜涓昏鐨勫煙 錛?br />
鏂板煙銆佹棫鍩熶互鍙婃案涔呭煙銆侸VM鐢熸垚鐨勬墍鏈夋柊瀵硅薄鏀懼湪鏂板煙涓備竴鏃﹀璞$粡鍘嗕簡涓瀹氭暟閲忕殑鍨冨溇鏀墮泦寰幆鍚庯紝渚胯繘鍏ユ棫鍩熴傝屽湪姘鎬箙鍩熶腑鏄敤鏉ュ瓨鍌↗VM鑷繁鐨勫弽灝勫璞$殑錛屽class鍜宮ethod瀵硅薄錛岃屼笖GC(Garbage Collection)涓嶄細鍦ㄤ富紼嬪簭榪愯鏈熷姘鎬箙鍩熻繘琛屾竻鐞嗐傚叾涓柊鍩熷拰鏃у煙灞炰簬鍫嗭紝姘鎬箙鍩熸槸涓涓嫭绔嬪煙騫朵笖涓嶈涓烘槸鍫嗙殑涓閮ㄥ垎銆?br />
C錛氬悇涓昏鍙傛暟鐨勪綔鐢ㄥ涓?/strong> 錛?br />
-Xms錛氳緗甹vm鍐呭瓨鐨勫垵濮嬪ぇ灝?br />
-Xmx錛氳緗甹vm鍐呭瓨鐨勬渶澶у?br />
-Xmn錛氳緗柊鍩熺殑澶у皬錛堣繖涓技涔庡彧瀵?jdk1.4鏉ヨ鏄湁鏁堢殑錛屽悗鏉ュ氨搴熷純浜嗭級
-Xss錛氳緗瘡涓嚎紼嬬殑鍫嗘爤澶у皬(涔熷氨鏄,鍦ㄧ浉鍚岀墿鐞嗗唴瀛樹笅錛屽噺灝忚繖涓艱兘鐢熸垚鏇村鐨勭嚎紼?
-XX錛歂ewRatio :璁劇疆鏂板煙涓庢棫鍩熶箣姣旓紝濡?XX錛歂ewRatio = 4灝辮〃紺烘柊鍩熶笌鏃у煙涔嬫瘮涓?錛?
-XX:NewSize錛氳緗柊鍩熺殑鍒濆鍊?br />
-XX:MaxNewSize 錛氳緗柊鍩熺殑鏈澶у?br />
-XX:PermSize錛氳緗案涔呭煙鐨勫垵濮嬪?br />
-XX:MaxPermSize錛氳緗案涔呭煙鐨勬渶澶у?br />
-XX:SurvivorRatio=n:璁劇疆鏂板煙涓璄den鍖轟笌涓や釜Survivor鍖虹殑姣斿箋傦紙Eden鍖轟富瑕佹槸鐢ㄦ潵瀛樻斁鏂扮敓鐨勫璞★紝鑰屼袱涓?Survivor鍖哄垯鐢ㄦ潵瀛樻斁姣忔鍨冨溇鍥炴敹鍚庡瓨媧諱笅鏉ョ殑瀵硅薄錛?br />
D錛氬父瑙佺殑閿欒 錛?br />
java.lang.OutOfMemoryError鐩鎬俊寰堝寮鍙戜漢鍛橀兘鐢ㄥ埌榪囷紝榪欎釜涓昏灝辨槸JVM鍙傛暟娌℃湁閰嶅ソ寮曡搗鐨勶紝浣嗘槸榪欑閿欒鍙堝垎涓ょ錛歫ava.lang.OutOfMemoryError: Java heap space鍜宩ava.lang.OutOfMemoryError: PermGen space錛屽叾涓墠鑰呮槸鏈夊叧鍫嗗唴瀛樼殑鍐呭瓨婧㈠嚭錛屽彲浠ュ悓榪囬厤緗?Xms鍜?Xmx鍙傛暟鏉ヨ緗紝鑰屽悗鑰呮槸鏈夊叧姘鎬箙鍩熺殑鍐呭瓨婧㈠嚭錛屽彲浠ラ氳繃閰嶇疆 -XX:MaxPermSize鏉ヨ緗?br />
JAVA_OPTS="-Xms256m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Djboss.platform.mbeanserver"
]]>log4j.rootLogger=DEBUG,CONSOLE
#鎵撳嵃鍒版帶鍒跺彴
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
#log4j.appender.CONSOLE.Encoding=GBK
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[log] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
#
##鎵撳嵃鍒板崟涓鏂囦歡
#log4j.appender.FILE=org.apache.log4j.FileAppender
#log4j.appender.FILE.File=info/info.log
#log4j.appender.FILE.Threshold=DEBUG
#log4j.appender.FILE.Append=false
##log4j.appender.FILE.Encoding=GBK
#log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout.ConversionPattern=[log] %d - %c -%-4r [%t] %-5p %c %x - %m%n
## Use this layout for LogFactor 5 analysis
#
#
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=INFO
log4j.appender.ROLLING_FILE.File=info/info
log4j.appender.ROLLING_FILE.Append=true
##log4j.appender.CONSOLE_FILE.Encoding=GBK
log4j.appender.ROLLING_FILE.MaxFileSize=3072KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=10000000
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[log] %d - %c -%-4r [%t] %-5p %c %x - %m%n
## 姣忓ぉ鐢熸垚涓涓枃浠?br />
#log4j.appender.Daily=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.Daily.Threshold=DEBUG
#log4j.appender.Daily.File=daily/log
##log4j.appender.A1.Encoding=GBK
#log4j.appender.Daily.DatePattern='.'yyyy-MM-dd
#log4j.appender.Daily.layout=org.apache.log4j.PatternLayout
#log4j.appender.Daily.layout.ConversionPattern=[log] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#閫氳繃socket鍙戦?br />
##log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
##log4j.appender.SOCKET.RemoteHost=localhost
##log4j.appender.SOCKET.Port=5001
##log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
##log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
##log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]% n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
# Log Factor 5 Appender
##log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
##log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
# 閫氳繃mail鍙戦?br />
##log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
##log4j.appender.MAIL.Threshold=FATAL
##log4j.appender.MAIL.BufferSize=10
##log4j.appender.MAIL.From=web@www.wuset.com
##log4j.appender.MAIL.SMTPHost=www.wusetu.com
##log4j.appender.MAIL.Subject=Log4J Message
##log4j.appender.MAIL.To=web@www.wusetu.com
##log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
##log4j.appender.MAIL.layout.ConversionPattern=[log] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# 瀛樺偍鍒版暟鎹簱
##log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
##log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
##log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
##log4j.appender.DATABASE.user=root
##log4j.appender.DATABASE.password=
##log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ([log] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
##log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
##log4j.appender.DATABASE.layout.ConversionPattern=[log] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# IM璐﹀彿
##log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
##log4j.appender.im.host = mail.cybercorlin.net
##log4j.appender.im.username = username
##log4j.appender.im.password = password
##log4j.appender.im.recipient = corlin@cybercorlin.net
##log4j.appender.im.layout=org.apache.log4j.PatternLayout
##log4j.appender.im.layout.ConversionPattern =[log] %d - %c -%-4r [%t] %-5p %c %x - %m%n
]]>
涓鍙ヨ瘽涔熶笉鐢ㄥ璇達紒
絎竴錛屽湪Web.xml鏂囦歡閲屽姞涓奆ilter錛屽鎵鏈夐〉闈㈣繘琛屼竴嬈$紪鐮佽漿鎹紟
涓嬮潰鏄疎ncodingFilter綾伙細
絎簩姝ワ紝淇敼CAS鐧婚檰楠岃瘉欏甸潰鐨勭紪鐮侊紝濡傛灉浣犳病鎹㈣繃榪欎釜涓婚鐨勮瘽錛岄粯璁ょ殑鏄慨鏀筗EB-INF\view\jsp\default\ui\casLoginView.jsp鏂囦歡錛屽湪鏈涓婇潰鍔犱笂<%@ page pageEncoding="gb2312"%>銆傝繖閲岃鐗瑰埆娉ㄦ剰涓涓嬶紝榪欎釜欏甸潰鐨勭紪鐮佽鍜屼笂闈ML鏂囦歡閲屽啓鐨勭紪鐮佷竴鑷淬?/p>
絎笁姝ワ紝淇敼楠岃瘉鎴愬姛鍚庡仛璺寵漿鐨勯〉闈€備篃灝辨槸WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp鏂囦歡錛屽湪鏈涓婇潰鍔犱笂<%@ page pageEncoding="UTF-8"%>銆傝繖閲岀壒鍒敞鎰忕殑鏄繖涓〉闈㈢殑緙栫爜瑕佸拰浣犺煩杞繃鍘葷殑閭d釜欏甸潰鐨勭紪鐮佷竴鑷達紝鎹㈠彞璇濊錛屽鎴風鐨勯獙璇侀〉闈㈢殑緙栫爜瑕佸拰榪欎釜鍦版柟鐨勪竴鑷達紝涓嶄竴鑷寸殑璇濓紝瑕佽漿鎹竴涓嬨?/p>
緇忚繃榪欎笁姝ヤ箣鍚庯紝鐞嗚涓婅灝卞凡緇忓彲浠ラ獙璇侀氳繃浜嗐?/p>
絎竴姝ワ紝鍒涘緩璇佷功
keytool -genkey -alias tomcat -keystore c:\mykeystore -dname "CN=xyb, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass 123456 -storepass 123456
PS:
-genkey 鍒涘緩涓涓瘉涔?br />
-alias 璇佷功鐨勫埆鍚?br />
-keystore 鎸囧畾鐢熸垚姝よ瘉涔︾殑璺緞(鍙笉鍐欙紝榛樿瀛樺湪緋葷粺鐨凥ome鐩綍涓?keystore鏂囦歡涓?br />
-storepass 鎸囧畾瀵嗛挜搴撶殑瀵嗙爜
-keypass 鎸囧畾鍒悕鏉$洰鐨勫瘑鐮?br />
-dname 鎸囧畾璇佷功鎷ユ湁鑰呬俊鎭?鍙笉鍐欙紝浣嗭紝緋葷粺浼氭彁紺轟綘渚濇杈撳叆榪欎簺淇℃伅錛岀壒鍒娉ㄦ剰“CN”鐨勫兼槸浣犳兂鍋氫負CAS鏈嶅姟鍣ㄧ殑榪欏彴鏈哄櫒鐨勫煙鍚嶆垨鏈哄櫒鍚嶏紝浣嗗氨鏄笉鑳芥槸IP)
-keyalg 鎸囧畾瀵嗛挜鐨勭畻娉?鍙笉鍐?
-validity 鎸囧畾鍒涘緩鐨勮瘉涔︽湁鏁堟湡澶氬皯澶?鍙笉鍐欙紝榛樿涓?0澶?
絎簩姝ワ紝瀵煎嚭璇佷功
keytool -export -alias tomcat -keystore c:\mykeystore -file c:\mycerts.cer -storepass 123456
PS:
-export 灝嗗埆鍚嶆寚瀹氱殑璇佷功瀵煎嚭鍒版枃浠?br />
-keystore 鎸囧畾鐢熸垚姝よ瘉涔︾殑璺緞(涓婁竴姝ヤ腑鍐欑殑浠涔堣繖灝卞啓浠涔堬紝濡傛灉娌″啓錛岃繖涔熶笉鍐?
-file 鎸囧畾瀵煎嚭鍒版枃浠剁殑鏂囦歡鍚?/p>
絎笁姝ワ紝鎶婂鍑虹殑璇佷功瀵煎叆鍒板鎴風鏈嶅姟鍣?/p>
keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass 123456 -file c:\mycerts.cer
PS:
-import 灝嗗凡絳懼悕鏁板瓧璇佷功瀵煎叆瀵嗛挜搴?br />
-file 鎸囧畾瑕佸鍏ュ埌瀵嗛挜搴撶殑鏂囦歡鍚?涔熷氨鏄笂涓姝ュ鍑虹殑閭d釜鏂囦歡)
鏈変竴涓彁紺猴細鏄惁淇′換榪欎釜璇佷功錛岃緭鍏?Y錛屽洖杞︺?/p>
絎洓姝ワ紝涓嬭澆cas闆嗘垚鍖呫傚皢涓嬭澆鍚庣殑鏂囦歡鏀瑰悕涓篶as-web錛屾斁緗湪liferay鐨剋ebapps鐩綍涓嬶紝鍦╟onf/server.xml涓壘鍒頒笅闈㈣繖孌碉紝鍘繪帀鍘熸湁鐨勬敞閲婂茍淇敼涓猴細
絎簲姝ワ紝鍦↙iferay鐨剋ebapps\ROOT\WEB-INF\classes\portal-ext.properties涓嬫坊鍔犲涓嬪唴瀹癸細
cas.auth.enabled=true
cas.login.url=https://xyb:8443/cas-web/login
cas.logout.url=https://xyb:8443/cas-web/logout
cas.server.name=瀹㈡埛绔疘P:8080
cas.service.url=
#cas.service.url=http://localhost:8080/c/portal/login
cas.validate.url=https://xyb:8443/cas-web/proxyValidate
濡傛灉娌″湪Liferay涓嬶紝鍙槸鏅氱殑Web紼嬪簭鍙敤Filter鏉ュ疄鐜幫紝鎵撳紑Web-INF\Web.XML鏂囦歡錛屽鍔犲涓嬩唬鐮?/p>
<filter>
<filter-name>CASFilter</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://xyb:8443/cas-web/login</param-value>
</init-param><!--榪欓噷鐨剎yb鏄疌AS鏈嶅姟绔殑IP鎴栨満鍣ㄥ悕-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://xyb:8443/cas-web/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8080</param-value><!--client:port灝辨槸闇瑕丆AS闇瑕佹嫤鎴殑鍦板潃鍜岀鍙o紝涓鑸氨鏄繖涓猅OMCAT鎵鍚姩鐨処P鍜宲ort-->
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern><!--榪欓噷灝辨槸浣犺鎷︽埅鐨刄RL璇鋒眰-->
</filter-mapping>
鏈鍚庝竴姝ワ紝鍦ㄥ鎴風鑾峰彇CAS璁よ瘉閫氳繃鐨勭敤鎴峰悕錛屽茍淇敼韜喚楠岃瘉紼嬪簭涓哄彧閫氳繃鐢ㄦ埛鍚嶆潵楠岃瘉銆傚鏄湪Liferay涓嬪氨涓嶇敤鍋氳繖涓姝ヤ簡錛孡iferay涓湰韜殑楠岃瘉鏄疭creenName瀛楁
1銆佸湪JSP鎴朣ervlet涓殑鐢ㄦ硶錛?/p>
2銆佸湪Java涓氳繃 Session 鑾峰彇鐧誨綍鐢ㄦ埛鍚?/p>
3銆佸湪 JSTL 涓幏鍙栫敤鎴峰悕鐨勬柟娉?/p>
闂姹囨伙細
涓ラ噸: edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator prox
yList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://192.168.1.111:8443/cas/proxyValidate] ticket=[ST-0-9h7Mx5HK3pfsdxRv
MD3y] service=[http%3A%2F%2F192.168.1.222%3A8080%2Fservlets-examples%2Fservlet%2FHelloWorldExample] renew=false]]]
榪欎釜CAS寮傚父鏄粠CAS Client閲岄潰鎶涘嚭錛屾槸褰撴垜浠笉浣跨敤璇佷功鐨凜N鍘昏闂煙鍚嶇殑鏃跺欙紙姣斿涓婃枃鏄敤IP璁塊棶鑰屼笖璇佷功鐨凜N鏄IP瀵瑰簲鐨勫煙鍚嶈岄潪璇P錛夛紝CASClient鏃犳硶淇′換錛屼篃灝辨槸鎴戜笂闈㈢壒鎰忔彁鍒扮殑閭d釜CN鐨勯棶棰樸傝鐗瑰埆娉ㄦ剰銆?/p>
榪樻湁涓縐嶆儏鍐靛氨鏄鎴風璇佷功娌℃湁瀵煎叆,鍚屾牱涔熸姤榪欎釜閿欒,鏈緇堝彲浠ュ綊涓轟竴鍙ヨ瘽,鑲畾鏄瘉涔﹂獙璇佹病鏈夐氳繃鎵鑷?
INFO [org.jasig.cas.authentication.AuthenticationManager
Impl] - <AuthenticationHandler: cn.com.tiansky.cas.authenticationHandlers.UPAuthenticationHandler successfully authenticated the user which provided the followi
ng credentials: [username: test]>
灝辯閿欒錛屽彲鑳芥槸瀹㈡埛绔殑閭d釜閰嶇疆鏂囦歡閲屽啓鐨勪笉澶銆備篃灝辨槸涓婇潰璇寸殑絎簲姝ワ紝瑕佸娉ㄦ剰涓涓嬨?/p>
java.io.IOException: Cannot recover key
at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(JSSE14Socket
Factory.java:125)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESo
cketFactory.java:88)
at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoi
nt.java:292)
at org.apache.coyote.http11.Http11BaseProtocol.init(Http11BaseProtocol.j
ava:138)
at org.apache.catalina.connector.Connector.initialize(Connector.java:101
榪欑閿欒錛屽彲鑳芥槸浣犵敓鎴愮殑璇佷功鏈夐棶棰橈紝濡傛灉keypass鍜宻torepass鐨勫瘑鐮佷笉涓鑷翠篃浼氭妸榪欎釜閿?涓嶇煡涓轟粈涔堥潪瑕佽鎴愪竴鏍風殑)