2010年10月25日
#
1、在本地數據庫中創建如下表:
-- Create table
create table TMP_CR_PERSONS
(
SPECIALTY VARCHAR2(50),
USER_GROUP VARCHAR2(50),
USER_NAME VARCHAR2(50),
USER_CATEGORY VARCHAR2(50)
)
2、創建DBLINK:
create database link LK2PMS connect to XXX identified by XX
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.5.99)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oradb9)
)
)'
3、創建視圖,查詢變更清單:
CREATE OR REPLACE VIEW V_TMP_CR_LIST AS
SELECT D.CHANGE_REQUEST_CODE,
D.PROJECT_NAME,
D.PRODUCT_NAME,
D.MODULE_NAME,
D.TYPE,
D.PRIVILEGE,
D.PROPOSE_TIME,
WF.TRANSACTOR,
WF.TASKNAME,
P.SPECIALTY,
P.USER_GROUP,
P.USER_CATEGORY
FROM PMS_CHANGE@lk2pms D,
(SELECT MAX(ID) ID
FROM WFT_FLOWCONTROL@lk2pms WF
WHERE WF.WORKFLOWID = 'ChangeRequest'
GROUP BY WF.WORKID) MX,
WFT_FLOWCONTROL@lk2pms WF,
TMP_CR_PERSONS P
WHERE WF.ID = MX.ID
AND WF.WORKID = D.CHANGE_REQUEST_ID
AND D.CHANGE_REQUEST_CODE LIKE 'CR%'
AND WF.TRANSACTOR = P.USER_NAME
AND D.STATE NOT IN ('結束','終止','拒絕');
4、創建統計視圖:
CREATE VIEW V_TMP_CR_STAT AS
SELECT T.USER_GROUP, T.USER_NAME, COUNT(V.CHANGE_REQUEST_CODE) TOTAL
FROM V_TMP_CR_LIST V, TMP_CR_PERSONS T
WHERE V.TRANSACTOR(+) = T.USER_NAME
GROUP BY CUBE(T.USER_GROUP, T.USER_NAME);
1、當然是訪問老系統中的,應該都采用兼容視圖
2、在訪問網公司系統的時候,出現內存不能寫的錯誤提示,讓后直接頁面加載失敗,解決辦法是,找到用SOGOU瀏覽器加載頁面后,發現需要安裝JITDSign這個插件,所以手工找到JITDSign.cab,解壓后直接運行“regsvr32 JITDSign.ocx”,再刷新頁面,OK了。
3、其他問題暫未發現。
1、利用命令“D:\FWMS\code\trunk\main\ear\ejb>dir /a:d /b”,列舉出所有的EJB模塊清單
2、結合上面的清單,結合正則“^(.*)$”,替換為“<ant antfile="${FWMS_code}/ear/ejb/$1/META-INF/build.xml" dir="${FWMS_code}/ear/ejb/$1/META-INF" target="ejbdoclet"/>”形式,并將得到的ant元素清單放置到工程下build.xml的“Generating_Code”target中。
3、基于如下正則,利用UE批量替換properties文件中的project.path:
查找:(project.path.*)
目標:project.path=../../../APP-INF/classes;../../../APP-INF/lib/activation.jar;../../../APP-INF/lib/ant.jar;../../../APP-INF/lib/apachepoi.jar;../../../APP-INF/lib/axis.jar;../../../APP-INF/lib/axis-ant.jar;../../../APP-INF/lib/bsh2.0.jar;../../../APP-INF/lib/classes12.zip;../../../APP-INF/lib/commons-
文件:build.properties
路徑:D:\FWMS\code\trunk\main\ear\ejb\
(注意需要選中搜索子目錄項)
4、上述完成之后,執行build_code.bat 即可完成EJB的編譯
5、設置ct-config.xml中相關內容,最后是啟動weblogic 并設置數據源,同時發布應用。
6、發布啟動weblogic的時候,報“java.lang.OutOfMemoryError: PermGen space”異常,在C:\bea\weblogic92\common\bin的commEnv.cmd中,查看到其內存設置為“set MEM_ARGS=-Xms128m -Xmx256m”;在C:\bea\user_projects\domains\fwms_domain\bin下startWebLogic.cmd中,添加“set MEM_ARGS=-Xms256m -Xmx512m -XX:MaxPermSize=128m”,適當加大內存。
此處的CAS是指Central Authentication Service,也即統一認真服務,這里采用的是JASIG提供的相關服務端及客戶端類庫,結合TOMCAT進行測試。
1、下載相關的服務器端和客戶端類庫,官網是:
http://www.jasig.org/cas/,目前我采用的是:
服務器端:cas-server-3.3.4-release.zip
客戶端:cas-client-2.0.11.zip
2、配置TOMCAT的SSL,具體可見上一篇博文:
在%CATALINA_HOME%/conf/server.xml中,添加:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="F:\eclipse\workspace\httpc\tomcat3.keystore"
keystorePass="123456"/>
配置OK后,可通過訪問“https://localhost:8443/examples/servlets/servlet/HelloWorldExample”來進行驗證
3、配置CAS服務器端:
將cas-server-3.3.4-release.zip中modules文件夾下的cas-server-webapp-3.3.4.war的解壓到TOMCAT的webapps目錄下。
重啟TOMCAT后,可以通過訪問“http://localhost:8080/cas/login”并輸入相同的用戶名密碼來進行驗證。
另:需要特別說明,cas應用中默認配置的是SimpleTestUsernamePasswordAuthenticationHandler,該處理類只要保持用戶名、密碼一直即可通過驗證。
4、配置CAS客戶端:
在webapps\examples\WEB-INF中,對web.xml添加如下內容:
<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://localhost:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://localhost:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
</filter-mapping>
同時,將cas-client-2.0.11.zip中的casclient.jar,拷貝到webapps\examples\WEB-INF\lib中,重啟TOMCAT即可進行驗證。
5、驗證CAS:
a、在瀏覽器中訪問“http://localhost:8080/examples/servlets/servlet/HelloWorldExample”
b、基于前面配置的過濾器,瀏覽器會定向CAS的認證頁面“https://localhost:8443/cas/login?service=http%3A%2F%2Flocalhost%3A8080%2Fexamples%2Fservlets%2Fservlet%2FHelloWorldExample”
c、在CAS的認證頁面中輸入相同的用戶名密碼test/test后,執行登錄
d、瀏覽器提示安全警告,點擊確定后即轉入到“http://localhost:8080/examples/servlets/servlet/HelloWorldExample?ticket=ST-1-xWK9nwArDLbjCwYiXOqu-cas”,同時頁面打出“Hello World”,配置成功。
HTTP Client是一個客戶端HTTP協議的類庫
1、首先是下載APACHE HTTP CLIENT相關的JAR,目前我引入到工程中的相關文件時:
httpclient-4.0.3.jar
httpcore-4.0.1.jar
httpmime-4.0.3.jar
commons-codec-1.4.jar
commons-logging-1.1.1.jar
JAR包之前的引用關系在README等相關說明中已有。
2、下載并運行TOMCAT,我下載的是TOMCAT6(對應的是JDK5),主要注意的是需要配置CATALINA_HOME這個環境變量。
3、制作服務器端證書,下面是我一個示例:
C:\Documents and Settings\dingjunxing>keytool -genkey -alias tomcat3 -keystore F
:\eclipse\workspace\httpc\tomcat3.keystore
輸入keystore密碼: 123456
您的名字與姓氏是什么?
[Unknown]: localhost
您的組織單位名稱是什么?
[Unknown]: sz
您的組織名稱是什么?
[Unknown]: sz
您所在的城市或區域名稱是什么?
[Unknown]: shenzhen
您所在的州或省份名稱是什么?
[Unknown]: guangdong
該單位的兩字母國家代碼是什么
[Unknown]: cn
CN=localhost, OU=sz, O=sz, L=shenzhen, ST=guangdong, C=cn 正確嗎?
[否]: y
輸入<tomcat3>的主密碼
(如果和 keystore 密碼相同,按回車): 123456
4、根據服務器證書導出客戶端證書,有兩種方式,一種為采用IE,下面提供一個利用KEY TOOL導出的方式:
keytool -export -file tomcat3.cert -alias tomcat3 -keystore F:\eclipse\workspace\httpc\tomcat3.keystore
注意:上面命令行必須進入到%java_home%/jre/lib/security中。
5、將獲取到的客戶端證書導入:
C:\Program Files\Java\jdk1.5.0_15\jre\lib\security>keytool -import -keystore cac
erts -file F:\eclipse\workspace\httpc\tomcat3.cert
輸入keystore密碼: 123456
Owner: CN=localhost, OU=sz, O=sz, L=shenzhen, ST=guangdong, C=cn
發照者: CN=localhost, OU=sz, O=sz, L=shenzhen, ST=guangdong, C=cn
序號: 4cc55438
有效期間: Mon Oct 25 17:56:08 CST 2010 至: Sun Jan 23 17:56:08 CST 2011
認證指紋:
MD5: E4:2E:BE:AC:A1:5D:E0:95:C7:95:93:BF:B3:F3:EE:5E
SHA1: F8:9A:BB:FA:C8:C5:8A:D2:FA:98:A1:95:64:65:42:9A:8F:0B:4A:7D
信任這個認證? [否]: y
認證已添加至keystore中
6、TOMCAT中相關設置,主要是修改CATALINA_HOME下的conf/server.xml,在其中添加如下一個連接器:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="F:\eclipse\workspace\httpc\tomcat3.keystore" keystorePass="123456"/>
7、運行相關代碼:
package org.apache.http.examples.client;
import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
/**
* This example demonstrates how to create secure connections with a custom SSL
* context.
*/
public class ClientCustomSSL {
public static void main(String[] args) throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
FileInputStream instream = new FileInputStream(new File("tomcat3.keystore"));
try {
trustStore.load(instream, "123456".toCharArray());
} finally {
instream.close();
}
SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
Scheme sch = new Scheme("https", socketFactory, 8443);
httpclient.getConnectionManager().getSchemeRegistry().register(sch);
HttpGet httpget = new HttpGet("https://localhost:8443/docs");
System.out.println("executing request" + httpget.getRequestLine());
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());
}
if (entity != null) {
entity.consumeContent();
}
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
}
運行結果正常,當然也可以通過在瀏覽器中輸入“https://localhost:8443/”的方式進行訪問。