最近測試OMADM1.2的時候,039,040兩個case是關(guān)于TLS SSL的,搞的很迷惑,最近看了一下原來TLS幾乎就是SSL,基本上一摸一樣而已。
Sun.com上面看到
SSL was developed by Netscape in 1994, and with input from the Internet community, has evolved to become a standard. It is now under the control of the international standards organization, the Internet Engineering Task Force (IETF). The IETF has renamed SSL to Transport Layer Security (TLS), and released the first specification, version 1.0, in January 1999. TLS 1.0 is a modest upgrade to the most recent version of SSL, version 3.0. The differences between SSL 3.0 and TLS 1.0 are minor.
所以這2個case基本上測試一個就足夠了。
另外tls本來就是傳輸層上的一個協(xié)議,所以要是用HTTPS的話,如果你用應(yīng)用服務(wù)器,比如TOMCAT WBLOGIC,他們都支持SSL,根本不需要程序?qū)崿F(xiàn)任何東西,只要你會使用keytool生成證書就可以了。
這塊只是牽扯到JSSE,具體可以到http://java.sun.com/j2se/1.4.2/docs/guide/security/jsse/JSSERefGuide.html#Introduction看
Keytool其實再JRE/LIB/SECUTITY下面的包里面,
C:\j2sdk
keytool 用法:
-certreq [-v] [-alias <alias>] [-sigalg <sigalg>]
[-file <csr_file>] [-keypass <keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
-delete [-v] -alias <alias>
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
-export [-v] [-rfc] [-alias <alias>] [-file <cert_file>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
-genkey [-v] [-alias <alias>] [-keyalg <keyalg>]
[-keysize <keysize>] [-sigalg <sigalg>]
[-dname <dname>] [-validity <valDays>]
[-keypass <keypass>] [-keystore <keystore>]
[-storepass <storepass>] [-storetype <storetype>]
[-provider <provider_class_name>] ...
-help
-identitydb [-v] [-file <idb_file>] [-keystore <keystore>]
[-storepass <storepass>] [-storetype <storetype>]
[-provider <provider_class_name>] ...
-import [-v] [-noprompt] [-trustcacerts] [-alias <alias>]
[-file <cert_file>] [-keypass <keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
-keyclone [-v] [-alias <alias>] -dest <dest_alias>
[-keypass <keypass>] [-new <new_keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
-keypasswd [-v] [-alias <alias>]
[-keypass <old_keypass>] [-new <new_keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
-list [-v | -rfc] [-alias <alias>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
-printcert [-v] [-file <cert_file>]
-selfcert [-v] [-alias <alias>] [-sigalg <sigalg>]
[-dname <dname>] [-validity <valDays>]
[-keypass <keypass>] [-keystore <keystore>]
[-storepass <storepass>] [-storetype <storetype>]
[-provider <provider_class_name>] ...
-storepasswd [-v] [-new <new_storepass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
1:生成一個
C:\j2sdk
idity 10 -storetype jks -keystore trust1.jks
2:查看你剛才生成的證書
C:\j2sdk
當然要輸入密碼了。
但是我不太明白服務(wù)器需要2個證書1個是custom identity keystore 一個是custom trust keystore為什么2個 的輸入類型不一樣,一個是KeyEntry另外一個是trustedCertEntry,這個流程到底是怎樣的?申請證書->導(dǎo)入證書 還是不明白,請指教。
摘要: 最近復(fù)習了一下AXIS,寫了2個小例子1: bean 1package test.soap.vo; 2 3import java.io.Serializable; 4 5public class User implements Serializable {&nbs... 閱讀全文
beejoy 原創(chuàng) 來源:java研究組織
目前網(wǎng)絡(luò)上關(guān)于對象序列化的文章不少,但是我發(fā)現(xiàn)詳細敘述用法和原理的文章太少。本人
把自己經(jīng)過經(jīng)驗總結(jié)和實際運用中的體會寫成的學(xué)習筆記貢獻給大家。希望能為整個java社
區(qū)的繁榮做一點事情。
序列化的過程就是對象寫入字節(jié)流和從字節(jié)流中讀取對象。將對象狀態(tài)轉(zhuǎn)換成字節(jié)流之后,
可以用java.io包中的各種字節(jié)流類將其保存到文件中,管道到另一線程中或通過網(wǎng)絡(luò)連接
將對象數(shù)據(jù)發(fā)送到另一主機。對象序列化功能非常簡單、強大,在RMI、Socket、JMS、EJB
都有應(yīng)用。對象序列化問題在網(wǎng)絡(luò)編程中并不是最激動人心的課題,但卻相當重要,具有
許多實用意義。
一:對象序列化可以實現(xiàn)分布式對象。主要應(yīng)用例如:RMI要利用對象序列化運行遠程主機
上的服務(wù),就像在本地機上運行對象時一樣。
二:java對象序列化不僅保留一個對象的數(shù)據(jù),而且遞歸保存對象引用的每個對象的數(shù)據(jù)。
可以將整個對象層次寫入字節(jié)流中,可以保存在文件中或在網(wǎng)絡(luò)連接上傳遞。利用對象序
列化可以進行對象的"深復(fù)制",即復(fù)制對象本身及引用的對象本身。序列化一個對象可能
得到整個對象序列。
從上面的敘述中,我們知道了對象序列化是java編程中的必備武器,那么讓我們從基礎(chǔ)開始
,好好學(xué)習一下它的機制和用法。
java序列化比較簡單,通常不需要編寫保存和恢復(fù)對象狀態(tài)的定制代碼。實現(xiàn)java.io.Seri
alizable接口的類對象可以轉(zhuǎn)換成字節(jié)流或從字節(jié)流恢復(fù),不需要在類中增加任何代碼。只
有極少數(shù)情況下才需要定制代碼保存或恢復(fù)對象狀態(tài)。這里要注意:不是每個類都可序列化,
有些類是不能序列化的,例如涉及線程的類與特定JVM有非常復(fù)雜的關(guān)系。
序列化機制:
序列化分為兩大部分:序列化和反序列化。序列化是這個過程的第一部分,將數(shù)據(jù)分解成字
節(jié)流,以便存儲在文件中或在網(wǎng)絡(luò)上傳輸。反序列化就是打開字節(jié)流并重構(gòu)對象。對象序列
化不僅要將基本數(shù)據(jù)類型轉(zhuǎn)換成字節(jié)表示,有時還要恢復(fù)數(shù)據(jù)。恢復(fù)數(shù)據(jù)要求有恢復(fù)數(shù)據(jù)的
對象實例。ObjectOutputStream中的序列化過程與字節(jié)流連接,包括對象類型和版本信息。
反序列化時,JVM用頭信息生成對象實例,然后將對象字節(jié)流中的數(shù)據(jù)復(fù)制到對象數(shù)據(jù)成員中。
下面我們分兩大部分來闡述:
處理對象流:
(序列化過程和反序列化過程)
java.io包有兩個序列化對象的類。ObjectOutputStream負責將對象寫入字節(jié)流,ObjectInp
utStream從字節(jié)流重構(gòu)對象。
我們先了解ObjectOutputStream類吧。ObjectOutputStream類擴展DataOutput接口。
writeObject()方法是最重要的方法,用于對象序列化。如果對象包含其他對象的引用,則
writeObject()方法遞歸序列化這些對象。每個ObjectOutputStream維護序列化的對象引用表,
防止發(fā)送同一對象的多個拷貝。(這點很重要)由于writeObject()可以序列化整組交叉引用的
對象,因此同一ObjectOutputStream實例可能不小心被請求序列化同一對象。這時,進行反引用
序列化,而不是再次寫入對象字節(jié)流。
下面,讓我們從例子中來了解ObjectOutputStream這個類吧。
// 序列化 today's date 到一個文件中.
FileOutputStream f = new FileOutputStream("tmp");
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject("Today");
s.writeObject(new Date());
s.flush();
現(xiàn)在,讓我們來了解ObjectInputStream這個類。它與ObjectOutputStream相似。它擴展Dat
aInput接口。ObjectInputStream中的方法鏡像DataInputStream中讀取Java基本數(shù)據(jù)類型的
公開方法。readObject()方法從字節(jié)流中反序列化對象。每次調(diào)用readObject()方法都返回
流中下一個Object。對象字節(jié)流并不傳輸類的字節(jié)碼,而是包括類名及其簽名。readObject()
收到對象時,JVM裝入頭中指定的類。如果找不到這個類,則readObject()拋出
ClassNotFoundException,如果需要傳輸對象數(shù)據(jù)和字節(jié)碼,則可以用RMI框架。
ObjectInputStream的其余方法用于定制反序列化過程。
例子如下:
//從文件中反序列化 string 對象和 date 對象
FileInputStream in = new FileInputStream("tmp");
ObjectInputStream s = new ObjectInputStream(in);
String today = (String)s.readObject();
Date date = (Date)s.readObject();
定制序列化過程:
序列化通常可以自動完成,但有時可能要對這個過程進行控制。java可以將類聲明為serial
izable,但仍可手工控制聲明為static或transient的數(shù)據(jù)成員。
例子:一個非常簡單的序列化類。
public class simpleSerializableClass implements Serializable{
String sToday="Today:";
transient Date dtToday=new Date();
}
序列化時,類的所有數(shù)據(jù)成員應(yīng)可序列化除了聲明為transient或static的成員。將變量聲
明為transient告訴JVM我們會負責將變元序列化。將數(shù)據(jù)成員聲明為transient后,序列化
過程就無法將其加進對象字節(jié)流中,沒有從transient數(shù)據(jù)成員發(fā)送的數(shù)據(jù)。后面數(shù)據(jù)反序
列化時,要重建數(shù)據(jù)成員(因為它是類定義的一部分),但不包含任何數(shù)據(jù),因為這個數(shù)據(jù)
成員不向流中寫入任何數(shù)據(jù)。記住,對象流不序列化static或transient。我們的類要用
writeObject()與readObject()方法以處理這些數(shù)據(jù)成員。使用writeObject()與readObject()
方法時,還要注意按寫入的順序讀取這些數(shù)據(jù)成員。
關(guān)于如何使用定制序列化的部分代碼如下:
//重寫writeObject()方法以便處理transient的成員。
public void writeObject(ObjectOutputStream outputStream) throws IOException{
outputStream.defaultWriteObject();//使定制的writeObject()方法可以
利用自動序列化中內(nèi)置的邏輯。
outputStream.writeObject(oSocket.getInetAddress());
outputStream.writeInt(oSocket.getPort());
}
//重寫readObject()方法以便接收transient的成員。
private void readObject(ObjectInputStream inputStream) throws
IOException,ClassNotFoundException{
inputStream.defaultReadObject();//defaultReadObject()補充自動序列化
InetAddress oAddress=(InetAddress)inputStream.readObject();
int iPort =inputStream.readInt();
oSocket = new Socket(oAddress,iPort);
iID=getID();
dtToday =new Date();
}
完全定制序列化過程:
如果一個類要完全負責自己的序列化,則實現(xiàn)Externalizable接口而不是Serializable接口
。Externalizable接口定義包括兩個方法writeExternal()與readExternal()。利用這些方
法可以控制對象數(shù)據(jù)成員如何寫入字節(jié)流.類實現(xiàn)Externalizable時,頭寫入對象流中,
然后類完全負責序列化和恢復(fù)數(shù)據(jù)成員,除了頭以外,根本沒有自動序列化。這里要注意了。
聲明類實現(xiàn)Externalizable接口會有重大的安全風險。writeExternal()與readExternal()
方法聲明為public,惡意類可以用這些方法讀取和寫入對象數(shù)據(jù)。如果對象包含敏感信息,
則要格外小心。這包括使用安全套接或加密整個字節(jié)流。到此為至,我們學(xué)習了序列化的
基礎(chǔ)部分知識。關(guān)于序列化的高級教程,以后再述。
那么什么是理財呢???
很多人都很知道“理財”,也都無時無刻不在理財,但把理財說清楚的人卻不多...
很多人說到理財想到的就是投資,就是開源節(jié)流,就是合理分配財產(chǎn),等等… …
其實,
---------------------------------------------------------
理財就是對財富的有效管理。
理財?shù)膬?nèi)涵很廣,包括開源節(jié)流,包括合理分配財產(chǎn),包括投資增值等,但又不止于這些。從理財?shù)幕A(chǔ)理論來講,主要包括:現(xiàn)金管理、資產(chǎn)管理、債務(wù)管理、風險管理、投資管理等等。
---------------------------------------------------------
現(xiàn)金管理是理財?shù)幕A(chǔ)。包括各項收入的籌劃和管理,包括各項稅費的管理,包括各項日常支出的管理,包括現(xiàn)金的積累和短期儲蓄等等。具體的管理工具和形式有各式各樣的銀行卡片,各式各樣的儲蓄方式,各種各樣的支出方式,包括各種各樣的節(jié)儉手段等等。
資產(chǎn)管理是理財?shù)闹匦摹YY產(chǎn)具體包括固定資產(chǎn)、流動資產(chǎn)等。固定資產(chǎn)比如房產(chǎn)、鋪面等等,流動資產(chǎn)包括儲蓄資產(chǎn)、投資資產(chǎn)、保險資產(chǎn)等。資產(chǎn)管理是家庭理財?shù)闹攸c,合理有效的管理需要。
債務(wù)管理是理財?shù)年P(guān)鍵。債務(wù)并非完全的壞事,合理的管理債務(wù)是迅速達到理財目標的捷徑,只要把債務(wù)控制在一定的合理的范圍之內(nèi),對優(yōu)化財務(wù)結(jié)構(gòu)有很好的作用。比如在財力許可的情況下可以通過按揭提前實現(xiàn)高品質(zhì)的家庭生活,通過金融信用延遲支付貨款往來等,從而更快實現(xiàn)財務(wù)目標。
風險管理是理財?shù)年P(guān)鍵。有效的風險管理是現(xiàn)代社會先進的標志,沒有對風險的管理交通工具不能上路運營,貿(mào)易貨運不能出門出海流通,商場大廈無法入住營業(yè),流動性和小家化也決定個人進行風險管理是大勢所趨。
投資管理是理財?shù)囊c。現(xiàn)在很多對投資理財非常渴望,一提到投資賺錢眼睛就發(fā)亮,主要是因為目前我國金融環(huán)境不夠完善,安全穩(wěn)健的大眾投資品種非常匱乏,很多人的收益局限于2個點以內(nèi),相較于去年初高達5個點的通貨膨脹顯然是一個很大的威脅。而國內(nèi)居民的投資信息和能力先天不足,稍有異動即可能遭遇陷阱的現(xiàn)狀導(dǎo)致國民儲蓄逐年逼高。在理財范疇內(nèi)投資增值是最需要專業(yè)知識的,也是實現(xiàn)家庭理財目標最關(guān)鍵的步驟。所以如何實現(xiàn)投資的有效管理就很重要。
總之,理財就是所有與財富有關(guān)的活動的總稱,是現(xiàn)代社會重要的組成要素,是現(xiàn)代人過上幸福快樂生活必備的基本素質(zhì)。
而且,五個理財?shù)幕痉矫嬉彩腔ハ嚓P(guān)聯(lián),互為制約,相互促進的。
???????????
做為新一代
Sync4J
開源項目為我們提供了完整的
OMA DM
1
:用到以下工具。
?
Oracle9i
? jboss-
? sync4j-server-dm-
?
SCTS_DeviceManagement_v1.12.zip? OMA
官方網(wǎng)站有下載。
2
:安裝調(diào)試
?
2.1
解壓文件:
?? jboss-
把
sync4j-server-dm-
直接安裝
SCTS.
? 2.2
配置環(huán)境變量
? JAVA_HOME=
? J2EE_HOME=
C:\jboss-
? SYNCSERVER_HOME=
D:\sync4j\all\server-dm
2.3
修改SYNCSERVER_HOME下的幾個配置文件
?
?SYNCSERVER_HOME\
default\config\common\properties\
Sync4j.properties
把第一行改為
server.uri=http://your
IP:8080/sync4j-dm/dm
?
SYNCSERVER_HOME\
install.properties
改為
(1)server-name=http://10.150.4.7:8080/sync4j-dm/dm
?(2)
用
oracle
的數(shù)據(jù)庫,以下是用來連接數(shù)據(jù)庫的,所以一定要配置正確。
jdbc.classpath=C:\\jboss-
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@
jdbc.user=sync4j
jdbc.password=sync4j
2
.4以上都做完后用Sync4j自己帶的安裝腳本安裝sync4j dm server
在
SYNCSERVER_HOME
下運行
bin\install.cmd jboss32
2
.5由于這個版本存在了一個bug,所以在2.4做完后要修改
SYNCSERVER_HOME\bin\start.cmd
把倒數(shù)第三行
call\run.bat -c
sync4j
改為
call %J2EE_HOME%\bin\run.bat -c sync4j
2
.6 在SYNCSERVER_HOME 運行 bin\start.cmd安裝
所有程序到安裝到了
jboss_home
下了,可以到
JBOSS_HOME\
server\sync4j
就可以看到了,看一下你的
oralce
庫里面也初始化了數(shù)據(jù),表也建好了。
2
.7 添加一個手機(我們其實是個模擬器)上來
http://your
ip:8080/dmdemo/jsp/addDevice.jsp
填寫一個
IMEI:111111111111111,
?
2
.8 配置scts
Add
device : IMEI:111111111111111
然后點
apply
點擊
DM
Account
Name
:
sync4j
Server:sync4j
Con :
不用填寫
Address
:
http://your
ip /sync4j-dm/dm
Port
:8080
Server
authentication:
? Digest :
找數(shù)據(jù)庫用
sync4j
的數(shù)據(jù)庫中,
sycn4j_device
表中
:IMEI:111111111111111
,
server
的
password
為:
srvpwd,
把這個
password
填寫到
password
中。
Client authentication
??
DIGEST: USER NAME:
sync4j PASSWORD:
sync4j
Add
就可以了
然后點
connect
連一下
DM SERVER
看看能否連上。
第一次一般會出現(xiàn)認證錯我,接著再聯(lián)一次就可以了,
SCTS
有日志可以查看。
如果連通了那下面就來做一個采集模擬器上的一個節(jié)點吧。
http://your ip:8080/dmdemo/index.html
用
device id
:
IMEI:111111111111111 login
?
然后點擊
add to operation list
然后用
SCTS
主動回聯(lián)一下,看看
server
能夠拿到這個節(jié)點的值
你會看到
6
個
message
!!!
詳細看一下這
6
個
message
你會發(fā)現(xiàn),這個節(jié)點的采集已經(jīng)成功了!
?