锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
榪欐槸鎴戣嚜宸辯爺絀跺嚭鏉ョ殑錛岀湡鐨勫彲浠ヨ鏄笘鐣岄鍙戜簡錛岀綉涓婁篃鏈変竴浜涗緥瀛愶紝閮借涔堝氨鏄佺増鏈紝瑕佷箞灝辯壒澶嶆潅銆傛垜鐨勮繖涓柟娉曠壒綆鍗曪紝甯屾湜瀵瑰ぇ瀹舵湁鐢紝涔熷笇鏈涘ぇ瀹剁弽鎯?/font>
鍥犱負(fù)鍏徃鐨勯渶瑕侊紝鐩存帴鍐欑殑鑻辨枃鐗堢殑錛屼笉鎯沖啀緲昏瘧鍥炴潵浜嗐傞兘涓嶉毦鐞嗚В錛屼竴鐪嬪氨鑳芥槑鐧姐備笉鎳傜殑璇風(fēng)暀璦
Introduction
First of all, I should say that setting liferay to connect to another database is very easy. Certainty, all of things to make easy always after numerous attempts . I searched several solutions from website before. But, not only for old version but also too complex. As my understand According to original source, and several trial. I found the way. And I think that it is the World Premiere.^_^
Prerequisites
You should know how to create services with Service Builder, Also You should know how to create new portlet. how to link to database and how it is used inside programming language code.
The steps described here were performed over Liferay 6.0.6.
Let us Beginning
1. Create a file named portal-ext.properties in {WEBSERVER-HOME}\webapps\ROOT\WEB-INF\classes. And type the following code:
2. Create a service.xml file. And type the following code:
3. Ant build-service.xml, let liferay to generate code.
4. Create a new file named ext-spring.xml in src\META-INF folder. And copy the following code:
5. No more. So easy right? About how to call and deploy it. I believe that you can do.
涓鍙ヨ瘽涔熶笉鐢ㄥ璇達(dá)紒
絎竴錛屽湪Web.xml鏂囦歡閲屽姞涓奆ilter錛屽鎵鏈夐〉闈㈣繘琛屼竴嬈$紪鐮佽漿鎹紟
涓嬮潰鏄疎ncodingFilter綾伙細(xì)
絎簩姝ワ紝淇敼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釜欏甸潰鐨勭紪鐮佷竴鑷達(dá)紝鎹㈠彞璇濊錛屽鎴風(fēng)鐨勯獙璇侀〉闈㈢殑緙栫爜瑕佸拰榪欎釜鍦版柟鐨勪竴鑷達(dá)紝涓嶄竴鑷寸殑璇濓紝瑕佽漿鎹竴涓嬨?/p>
緇忚繃榪欎笁姝ヤ箣鍚庯紝鐞嗚涓婅灝卞凡緇忓彲浠ラ獙璇侀氳繃浜嗐?/p>
鎵撳紑婧愪唬鐮佹枃浠秛til-taglib/src/com/liferay/taglib/util/VelocityTaglib.java
鎵懼埌journalContentSearch()鏂規(guī)硶錛屽啀鍚庨潰澧炲姞涓涓柟娉曪細(xì)
public String journalArticleSearch() throws Exception {
_res.recycle();
SearchTag.doTag(_ctx, _req, _res);
return _res.getString();
}
閲嶆柊鎴愮敓util-taglib.Jar鍖呫傚彂甯冨埌鏈嶅姟鍣ㄣ?/p>
鐒跺悗錛屼慨鏀逛富棰樺寘涓師鏉ョ殑$theme.journalContentSearch()涓?theme.journalArticleSearch()錛屽嵆鍙?/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 鎸囧畾璇佷功鎷ユ湁鑰呬俊鎭?鍙笉鍐欙紝浣嗭紝緋葷粺浼?xì)鎻惤C轟綘渚濇杈撳叆榪欎簺淇℃伅錛岀壒鍒娉ㄦ剰“CN”鐨勫兼槸浣犳兂鍋氫負(fù)CAS鏈嶅姟鍣ㄧ殑榪欏彴鏈哄櫒鐨勫煙鍚嶆垨鏈哄櫒鍚嶏紝浣嗗氨鏄笉鑳芥槸IP)
-keyalg 鎸囧畾瀵嗛挜鐨勭畻娉?鍙笉鍐?
-validity 鎸囧畾鍒涘緩鐨勮瘉涔︽湁鏁堟湡澶氬皯澶?鍙笉鍐欙紝榛樿涓?0澶?
絎簩姝ワ紝瀵煎嚭璇佷功
keytool -export -alias tomcat -keystore c:\mykeystore -file c:\mycerts.cer -storepass 123456
PS:
-export 灝嗗埆鍚嶆寚瀹氱殑璇佷功瀵煎嚭鍒版枃浠?br />
-keystore 鎸囧畾鐢熸垚姝よ瘉涔︾殑璺緞(涓婁竴姝ヤ腑鍐欑殑浠涔堣繖灝卞啓浠涔堬紝濡傛灉娌″啓錛岃繖涔熶笉鍐?
-file 鎸囧畾瀵煎嚭鍒版枃浠剁殑鏂囦歡鍚?/p>
絎笁姝ワ紝鎶婂鍑虹殑璇佷功瀵煎叆鍒板鎴風(fēng)鏈嶅姟鍣?/p>
keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass 123456 -file c:\mycerts.cer
PS:
-import 灝嗗凡絳懼悕鏁板瓧璇佷功瀵煎叆瀵嗛挜搴?br />
-file 鎸囧畾瑕佸鍏ュ埌瀵嗛挜搴撶殑鏂囦歡鍚?涔熷氨鏄笂涓姝ュ鍑虹殑閭d釜鏂囦歡)
鏈変竴涓彁紺猴細(xì)鏄惁淇′換榪欎釜璇佷功錛岃緭鍏?Y錛屽洖杞︺?/p>
絎洓姝ワ紝涓嬭澆cas闆嗘垚鍖呫傚皢涓嬭澆鍚庣殑鏂囦歡鏀瑰悕涓篶as-web錛屾斁緗湪liferay鐨剋ebapps鐩綍涓嬶紝鍦╟onf/server.xml涓壘鍒頒笅闈㈣繖孌碉紝鍘繪帀鍘熸湁鐨勬敞閲婂茍淇敼涓猴細(xì)
絎簲姝ワ紝鍦↙iferay鐨剋ebapps\ROOT\WEB-INF\classes\portal-ext.properties涓嬫坊鍔犲涓嬪唴瀹癸細(xì)
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>
鏈鍚庝竴姝ワ紝鍦ㄥ鎴風(fēng)鑾峰彇CAS璁よ瘉閫氳繃鐨勭敤鎴峰悕錛屽茍淇敼韜喚楠岃瘉紼嬪簭涓哄彧閫氳繃鐢ㄦ埛鍚嶆潵楠岃瘉銆傚鏄湪Liferay涓嬪氨涓嶇敤鍋氳繖涓姝ヤ簡錛孡iferay涓湰韜殑楠岃瘉鏄疭creenName瀛楁
1銆佸湪JSP鎴朣ervlet涓殑鐢ㄦ硶錛?/p>
2銆佸湪Java涓氳繃 Session 鑾峰彇鐧誨綍鐢ㄦ埛鍚?/p>
3銆佸湪 JSTL 涓幏鍙栫敤鎴峰悕鐨勬柟娉?/p>
闂姹囨伙細(xì)
涓ラ噸: 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>
榪樻湁涓縐嶆儏鍐靛氨鏄鎴風(fēng)璇佷功娌℃湁瀵煎叆,鍚屾牱涔熸姤榪欎釜閿欒,鏈緇堝彲浠ュ綊涓轟竴鍙ヨ瘽,鑲畾鏄瘉涔﹂獙璇佹病鏈夐氳繃鎵鑷?
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鐨勫瘑鐮佷笉涓鑷翠篃浼?xì)鎶姌q欎釜閿?涓嶇煡涓轟粈涔堥潪瑕佽鎴愪竴鏍風(fēng)殑)