-Dosgi.noShutdown=true
-Declipse.ignoreApp=true
-Dorg.eclipse.rwt.compression=true
-Dorg.eclipse.rwt.clientLibraryVariant=DEBUG
-Dorg.eclipse.rwt.clientLogLevel=INFO
-Dorg.trustie.loong.logging.DefaultServiceLog.level=ERROR
-Dorg.ops4j.pax.logging.DefaultServiceLog.level=ERROR
-Dorg.eclipse.equinox.http.jetty.log.stderr.threshold=error
-Dosgi.startLevel=100
-Dapp.base=d:/logs
-Xms512m
-Xmx512m
-XX:MaxNewSize=256m
-XX:MaxPermSize=256m
typedef struct tagMSG { // msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;
下面我们来分析一下这个结构体:
HWND hwnd:hwnd是一个窗口的句柄,用来唯一标识一个窗口资源;至于什么是一个句柄,它有点类似对C或C++中的指针,句柄是资源的标识,根据资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。
UINT message:message是一个UINT(即C或C++中的unsign int)类型的变量,它用来标识一个具体的消息,如按键盘的消息。message用一个整数来表示,但是一个整数通常不好记忆,所以在VC++中就用微软给我们定义的一些宏来表示,如WM_KEYDOWN。
WPARAM wParam:整型参数,用来指示message的附加信息。
LPARAM lParam:跟wParam一样,是一个整型参数,用来指示message的附加信息。与wParam一样,多用来区分同一个消息的不同情况。
DWORD time:DWORD其实是C或C++中的unsigned long类型,time标识了一个消息产生时的时间。
POINT pt:POINT是一个结构体,表示现实世界里的一个点,里面有两个LONG类型的成员x和y,用来表示产生这个消息产时光标或鼠标的坐标。
由此可知一个MSG的变量所包含的信息是相当多和详细的。
三、了解WinMain函数
然后,像C或C++控制台程序的入口是main函数一样,Win32程序的入口也是main函数,不过它叫WinMain函数,它的定义如下:
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instanceHINSTANCE hPrevInstance, // handle to previous instanceLPSTR lpCmdLine, // command lineint nCmdShow // show state);下面我们来分析一下这个函数:HINSTANCE hInstance:hInstance是一个指向当前应用程序实例的一个句柄。实例就是一个运行中的程序。HINSTANCE hPrevInstance:hPrevInstance是一个指向之前应用程序实例的一个句柄。LPSTR lpCmdLine:lpCmdLine是一个指向字符串的指针,表示一个命令行参数,什么是命令行参数呢?就是我们C或C++中的main函数中的参数char *argv[]。int nCmdShow:用来表示一个窗口的显示,表示它是要最大化显示,最小化显示,正常大小显示还是隐藏显示。
[3]CAS做单点登陆(SSO)——部署CAS来源: 互联网 发布时间: 2013-10-30
安装CAS让我们先简单了解下CAS。全称 Central Authentication Service,中文翻译为中央认证服务,官方网址是http://www.jasig.org/cas。它是一个开源产品。具有如下特点:
用它做各个系统的集成后,各个系统只需关注跟CAS做集成即可,不会引入系统间的任何依赖。 各个系统集成后,登陆的认证中心在CAS,各个系统只能从CAS获得用户输入的用户名,然后自动完成登陆。另外,CAS认证支持对数据库表的查询和比较。 CAS默认使用HTTPS协议,需要安装CA(Certificate Authority,中文名叫数字证书认证机构)证书。如果不想启用HTTPS,请参考CAS不起用HTTPS。 下面介绍中默认为采用HTTPS协议。
安装步骤:
定义域名HTTPS信任域名,而不信任IP。因此需要先设定一个域名,如果不采用HTTPS,可以跳过这个一步。
假定域名设置为sso.aurora-framework.org。
在C:\Windows\System32\drivers\etc\hosts添加内容如下:
127.0.0.1 sso.aurora-framework.org生成CA证书
证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书。我们这边用JDK自带的keytool工具生成证书, 如果以后真正在产品环境中使用肯定要去证书提供商去购买。
购买正版证书,请查看购买证书。
用JDK自带的keytool工具生成密钥库,在命令行输入:
keytool -genkey -alias aurora -keyalg RSA -keystore E:/tomcats/tomcat7/keystore/aurora
没有Keytool这个命令?请参考设置JAVA环境变量。
以上这个命令就是在E:/tomcats/tomcat7/keystore/aurora上建立一个别名叫aurora,算法是RSA的证书库。这里E:/tomcats/tomcat7/keystore/这个目录需要预先存在。比如在tomcat根目录下新建一个keystore文件夹。
其中“您的名字与姓氏是什么”一栏需要填入设定的域名(这里假定是sso.aurora-framework.org),其他可以随便填写。密钥库口令同样随意设置,为了方便记忆,这里设置为aurora。
导出一个证书在命令行中输入
keytool -export -file E:/tomcats/tomcat7/keystore/aurora.crt -alias aurora -keystore E:/tomcats/tomcat7/keystore/aurora
-file 是新生成的证书文件,证书别称叫aurora,-keystore就是刚才生成的密钥库。
密钥库口令就是刚才设置的,这里假定是aurora。
至此,E:/tomcats/tomcat7/keystore/应该有如下两个文件:
客户端导入证书找到客户端JDK的安装目录,比如是C:/Program Files/Java/jdk1.7.0_03/。此目录是系统盘,所以请用管理员身份进入命令行。
在命令行中输入
keytool -import -keystore "C:/Program Files/Java/jdk1.7.0_03/jre/lib/security/cacerts" -file E:/tomcats/tomcat7/keystore/aurora.crt -alias aurora
这里keystore是客户端JDK的密钥库位置,-file是前面步骤中生成的证书文件,为了方便记忆,别名叫aurora。
这里密钥库密码默认是changeit。非自定义创建的密钥库密码都是changeit。
查看和删除证书请看查看和删除证书。