国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Jetspeed2學(xué)習(xí)筆記(五)
19、Jetspeed應(yīng)用框架詳解:
jetspeed使用spring來作為它的缺省組件框架,但是,jetspeed的體系架構(gòu)使得它可以很容易替換其組件管理框架,其控制是在JetspeedServlet中,其類圖如下:
在JetspeedServlet初始化啟動時,在其init()方法中,有如下調(diào)用引擎的代碼:
engine = new JetspeedEngine(properties, applicationRoot, config, initializeComponentManager(config, applicationRoot, properties)); Jetspeed.setEngine(engine); engine.start();
其中的initializeComponentManager方法加載組件管理(assembly)框架,要改用其他額IoC框架的話,需要修改此函數(shù)。
以下就是initializeComponentManager方法的代碼:
ServletConfigFactoryBean.setServletConfig(servletConfig);        // String relativeApplicationRoot = getRealPath("/");         String relativeApplicationRoot = appRoot;        String absApplicationRoot = new File(relativeApplicationRoot).getCanonicalPath();                                final String assemblyDir = configuration.getString("assembly.dir","/WEB-INF/assembly");         final String assemblyFileExtension = configuration.getString("assembly.extension",".xml");                              String[] bootConfigs = new String[] {"/WEB-INF/assembly/boot/*.xml"};         String[] appConfigs = new String[] {assemblyDir+"/*"+assemblyFileExtension};         ServletContext servletContext = servletConfig.getServletContext();         SpringComponentManager cm = new SpringComponentManager(bootConfigs, appConfigs, servletContext, appRoot);                       return cm;
從以上代碼可以看出:
1、 Spring框架的所有應(yīng)用配置文件都放在了/WEB-INF/assembly目錄下。
2、 初始配置文件放在了/WEB-INF/assembly/boot/目錄下,這個目錄下目前只有一個文件 ――datasource.xml,記錄了ojb數(shù)據(jù)庫的連接基本配置,如果要修改數(shù)據(jù)庫的連接配置,可以修改它,這種情況一般發(fā)生在應(yīng)用服務(wù)器要從Tomcat遷移到別的J2EE服務(wù)器時。
3、 在JetspeedServlet啟動的時候,收集assembly目錄下的所有Spring配置文件,傳遞給Spring作初始加載。
20、數(shù)據(jù)庫連接模式修改:
Jetspeed目前數(shù)據(jù)庫的連接配置信息寫在了catalina/jetspeed.xml配置文件中了,以Resource標(biāo)簽的模式來作為一個資源而定義。這中模式不是很通用,在weblogic中我就不知道改如何修改了。但是,可以通過另外一種方法來修改數(shù)據(jù)庫的配置模式:
在/WEB-INF/assembly/boot/目錄下的datasource.xml文件中,我們將前面居于Context上下文的加載模式注釋掉,如下 所示:
<bean id="JetspeedDS" class="org.apache.jetspeed.components.rdbms.ojb.ConnectionRepositoryEntry">
<property name="jndiName">
<value>java:comp/env/jdbc/jetspeed</value>
</property>
</bean>
將其下面的居于“common DBCP Pooled datasource”模式的連接模式放開,如下所示:
<bean id="JetspeedDS" class="org.apache.jetspeed.components.rdbms.ojb.ConnectionRepositoryEntry">
<property name="driverClassName">
<value>{my.drivers.class.name}</value>
</property>
<property name="url">
<value>{URL to my DB}</value>
</property>
<property name="username">
<value>{username}</value>
</property>
<property name="password">
<value>{password}</value>
</property>
</bean>
同時修改classes目錄下的OJB.properties文件(編譯前在/etc/db-ojb/OJB.properties),修改里面的ConnectionFactoryClass或ConnectionManagerClass屬性如下:
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryDBCPImpl
或:
ConnectionManagerClass=org.apache.jetspeed.components.rdbms.ojb.ConnectionManagerImpl
|--------------------------à推薦這個
兩個只要修改一個就可以了。
修改后,連接池不再用J2EE應(yīng)用服務(wù)器提供了,而是由DBCP來負(fù)責(zé)提供。
21、用戶登陸驗證:
1、 form指向“/jetspeed/login/proxy”,在web.xml定義中,其被定向到“jetspeed-portal-version.jar”中的org.apache.jetspeed.login. LoginProxyServlet.java中2、 LoginProxyServlet.java中,用戶名和密碼被封裝在session中后,重定向到“/login/redirector”,指向“org.apache.jetspeed.login.LoginRedirectorServlet.java”中。3、 在導(dǎo)向(觸發(fā))到/login/redirector時,由于在/conf/Catalina/jetspeed.xml中配置了居于JAASRealm的驗證,并且連接在web.xml中的《security-constraint》中配置了對資源“/login/redirector”需要訪問驗證,所以JAAS驗證被觸發(fā)。
22、規(guī)范摘錄:
Portlet API定義了一個 PortletURL 的接口。Portlets 必須用這個 PortletURL 物件來產(chǎn)生 portlet URLs。 在產(chǎn)生 PortletURL 的同時, PortletURL 也會呼叫 RenderResponse 接口定義的兩個方法:
createActionURL 和 createRenderURL。
createActionURL 用來生成 action URLs。
createRenderURL 用來生成 render URLs。
一個render URL 是對某些特殊類型action URLS 的一種優(yōu)化。 在 render portlet URL 的過程中 Portal/portlet-container 不允許調(diào)用目標(biāo) portlet 的 processAction方法。 Portal/portlet-container必須確保當(dāng)在建構(gòu) render URL 時所設(shè)定的參數(shù), 也能變成是在請求這個 portlet 時的參數(shù)。
Portlets可以通過 PortletURL 所提供的 setParameter 和 setParameters 兩個方法, 對 PortletURL 物件設(shè)定一些應(yīng)用程序的特殊參數(shù)。 setParameter 這個方法必須把以前所設(shè)定的同名參數(shù)給取代掉。所有 portlet 所加到 PortletURL 物件上的參數(shù)都必須為該 portlet 的可用請求參數(shù)。 Portlet 開發(fā)者必須注意到 render request 的請求參數(shù)并非在產(chǎn)生 PortletURL 時就被使用到。
Portlet-container不能把在 action request 得到的參數(shù)傳遞到后續(xù)的 render request。 假如 portlet 要這樣做, 可以通過 render URL 或是在 processAction 的時候,利用 ActionResponse 物件的 setRenderParameter or serRenderParameters 方法來做。
一個 portlet 可以利用 PortletRequest 接口提供的 isWindowStateAllowed 方法來得知本身是否可以使用該 window state。
23、Jetspeed2 在WebLogic上的部署
假設(shè)BEA的根目錄是${BEA},自己的建的domain叫mydomain,并且,已經(jīng)把應(yīng)用的端口由7001改為80了
1. 在${BEA}下新建shared/lib文件夾,把tomcat目錄下的shared/lib下的五個jar包拷到新建的文件夾中:
jetspeed-api-2.0-M1.jar
jetspeed-commons-2.0-M1.jar
pluto-1.0.1-rc1.jar
portals-bridges-common-0.1.jar
portlet-api-1.0.jar
2. 把jetspeed文件夾拷到${BEA}/user_projects/domains/mydomain/applications下面。
3. 修改${BEA}/user_projects/domains/mydomain/目錄下的startWeblogic.cmd 文件,添加如下的一些設(shè)置(紅色的為添加的):
set SHLIB=C:\bea\shared\lib
set SHARED_PATH=%SHLIB%\jetspeed-api-2.0.jar;%SHLIB%\jetspeed-commons-2.0.jar;%SHLIB%\pluto-1.0.1.jar;%SHLIB%\portals-bridges-common-1.0.jar;%SHLIB%\portlet-api-1.0.jar;
set CLASSPATH=%SHARED_PATH%;%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%\jre\lib\rt.jar;%WL_HOME%\server\lib\webservices.jar;%CLASSPATH%
并確保有如下紅色這句話:(很重要哦?。。?div style="height:15px;">
%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Djava.naming.provider.url=t3://localhost:80 -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
4. 修改jetspeed/WEB-INF/assembly/目錄下的deployment.xml(或jetspeed-spring.xml)文件,找到 <bean id="org.apache.jetspeed.tools.pamanager.servletcontainer.ApplicationServerManager"
class="org.apache.jetspeed.tools.pamanager.servletcontainer.TomcatManager"
init-method="start" destroy-method="stop"
> 這樣的設(shè)置,把TomcatManager改成WeblogicManager,并把下面的<constructor-arg></constructor-arg>設(shè)置刪掉。
5.Setup a JDBC Connection and Pool。
Startup weblogic running the startWeblogic.cmd
Goto: http://localhost:7001/console/ and login, goto Services->JDBC->Connection Pools. Create a new pool. Create a JDBC data source named JetspeedDB based on the Connection Pool.
6.修改weblogic.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<context-root>/jetspeed</context-root>
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/jetspeed</res-ref-name>
<jndi-name>JetspeedDB</jndi-name>
</resource-description>
</reference-descriptor>
<!--
<container-descriptor>
<servlet-reload-check-secs>-1</servlet-reload-check-secs>
</container-descriptor>
-->
</weblogic-web-app>
24、Portlet中獲得portlet.xml中預(yù)先綁定的參數(shù)
在portlet.xml中預(yù)先定義了如下的參數(shù)值:
<portlet-preferences>
<preference>
<name>TopRange</name>
<value>100</value>
</preference>
</portlet-preferences>
在portlet-class中可以通過如下代碼來取得:
private long getHighRange(PortletRequest request) {
PortletPreferences prefs = request.getPreferences();
String highRangePref = prefs.getValue("TopRange", "102"); //如果找不到“TopRange”,返回默認(rèn)值102
long range = Long.parseLong(highRangePref);
if (range < 2) {
range = 102;
}
return range;
}
25、設(shè)置本地語言的portlet標(biāo)題
要修改portlet的decorator中的標(biāo)題(主要用在本地化的過程中),必須在相應(yīng)的resource資源文件中,定義如下兩個變量的值:
javax.portlet.title=\u89d2\u8272\u5b89\u5168\u6027\u6d4b\u8bd5
javax.portlet.short-title=\u89d2\u8272\u5b89\u5168\u6027\u6d4b\u8bd5
26、獲得用戶的Subject
private Subject getSubject()
{
AccessControlContext context = AccessController.getContext();
return Subject.getSubject(context);
}
27、SSO研究
其sso,感覺也是構(gòu)建Form,提交相關(guān)證書到相應(yīng)的異構(gòu)系統(tǒng)的LogonForm中。
Jetspeed2中,專門寫了一個SSOIFramePortlet的portlet來專門處理單點登陸,其是由“IFrameGenericPortlet”擴(kuò)展而來,里面多了一些根據(jù)SSO配置信息來構(gòu)建提交username和password的form的代碼,其大概意思可以用如下代碼來表達(dá):
String site = request.getPreferences().getValue("SRC", null);
context = getPortletContext();
sso = (SSOProvider)context.getAttribute("cps:SSO");
Subject subject = getSubject(); // getSubject()在26中有說明。
SSOContext context = sso.getCredentials(subject, site);
request.setAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME, context.getRemotePrincipalName());
request.setAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD, context.getRemoteCredential());
………
super.doView(request, response);
具體可以好好研究一下類:org.apache.jetspeed.portlet. SSOIFramePortlet.java這個類,其在jetspeed-web-content-version.jar包中定義。
SSO的具體應(yīng)用,其實只要在系統(tǒng)管理中配置了相應(yīng)的站點后,只要定義一個居于SSOIFramePortlet的portlet頁面就可以了。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Jetspeed2.0中單點登錄的實現(xiàn)
Portal實現(xiàn)原理
Welcome to Jetspeed-2
Liferay系列文章(四)Portal產(chǎn)品介紹--開放源碼Portal產(chǎn)品
有話好好說: 幾種開源Portal的簡單介紹分析
Jetspeed JetExpress Tutorial Portal 筆記2 -- 定制...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服