Weblogic下项目部署遇到的问题总结

来源:互联网 发布:淘宝卖家如何邀请代销 编辑:程序博客网 时间:2024/06/05 16:32

1. 项目session丢失解决方法:

在项目的weblogic.xml中添加如下节点配置,cookie-name可以任意命名:
<session-descriptor><cookie-name>JSESSIONID1</cookie-name></session-descriptor>


2. 更改weblogic的jar包加载顺序(优先加载项目下的jar包)

在项目的weblogic.xml中添加如下节点配置(welogic10.3.6以上版本):

<container-descriptor>
        <!--<prefer-web-inf-classes>true</prefer-web-inf-classes>-->
        <prefer-application-packages>
            <package-name>org.apache.commons.lang.*</package-name>
            <package-name>antlr.*</package-name>
            <package-name>org.hibernate.*</package-name>
            <package-name>javax.persistence.*</package-name>
        </prefer-application-packages>
</container-descriptor>

其中<prefer-web-inf-classes>和<prefer-application-packages>只能任选其中之一


3. weblogic配置单向和双向ssl

3.1 配置单向SSL认证

WebLogic启用SSL连接需部署服务器证书、CA证书链、信任证书链。WebLogic安装完成后,在\wlserver_10.3\server\lib目录下会自动创建DemoIdentity.jks(密码DemoIdentityKeyStorePassPhrase)、DemoTrust.jks(密码DemoTrustKeyStorePassPhrase)、cacerts三个文件,分别存放服务器证书、信任证书和CA证书链。前两个文件是非安全的,只能用于测试,不能用于生产;后一个文件是Java的默认cacerts文件。对生产系统,必须部署独有的服务器证书、信任证书和CA证书链。本节描述部署生产系统Server证书的操作过程。


3.1.1 创建Server存储库

3.1.1.1 创建Server私钥

使用JDK自带的keytool工具创建Server私钥。命令如下:
keytool -genkey -alias AdminServer -keyalg RSA -keysize 1024 -keystore AdminServer.jks
该命令会询问存储库的密码和证书信息以及私钥保护密码。大致内容如下:
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: AdminServer
您的组织单位名称是什么?
[Unknown]: Enterprise
您的组织名称是什么?
[Unknown]: WJZhiFu
您所在的城市或区域名称是什么?
[Unknown]: BeiJing
您所在的州或省份名称是什么?
[Unknown]: BJ
该单位的两字母国家代码是什么
[Unknown]: CN
CN=AdminServer, OU=Enterprice, O=WJZhiFu, L=BeiJing, ST=BJ, C=CN 正确吗?
[否]: y
输入的主密码
(如果和 keystore 密码相同,按回车):
再次输入新密码:
填写时应注意:
? CN域应和Server域名一致,不应使用Server的ip地址;
? OU域应按颁发的证书类型划分为多个单元;如:Server、Enterprise、Person,可以使用编码;
? O域应为公司的英文名称;
? L域应为城市的英文名称;
? ST域应为省的英文名称;
? C域应为国家代码CN;
? 存储库的密码和私钥密码应不同。


3.1.1.2 生成Server的证书申请文件

keytool -certreq -alias AdminServer -sigalg "MD5withRSA" -file AdminServer.csr -keystore AdminServer.jks

3.1.1.3 认证证书申请

提交上步生成的AdminServer.csr证书申请文件提交给证书颁发机构进行认证。本例中使用openssl认证该证书申请,命令如下:
openssl ca -in AdminServer.csr -out AdminServer.crt -config openssl.cfg

3.1.1.4 导入证书文件

从CA获取到认证的证书文件后,使用keytool将该证书文件导入到存储库。Keytool导入证书时,会自动检查证书的合法性,确认该证书是信任的CA签署的。默认情况下,我们的CA证书没有包含在Java信任的CA清单中,因此先需要将我们的CA添加到Java的信任CA清单中。命令如下:
keytool -import -file ca.crt -keystore D:\bea\jdk160_05\jre\lib\security\cacerts
注意:请确认您使用的keytool的JDK位置,Java信任CA清单存储库即为该JDK的jre/lib/security/cacerts文件。
添加CA证书完成后,将该文件复制到WebLogic的server/lib目录,覆盖当前的cacerts文件,然后执行如下命令导入Server的证书文件。
keytool -import -trustcacerts -alias AdminServer -file AdminServer.crt -keystore AdminServer.jks
导入完成后,复制AdminServer.jks存储库到WebLogic的server/lib。至此,Server证书存储库准备就绪。


3.1.2 创建CA证书存储库

从CA处下载CA证书文件。CA证书文件一般有两种形式,一是单独的CA证书文件,二是.p7b证书链文件。

3.1.2.1 导入独立的CA证书文件

keytool可以导入DER格式(二进制)和PEM格式(BASE64编码格式,-----BEGIN CERTIFICATE-----打头,-----END CERTIFICATE-----结束)。命令如下:
keytool -importcert -file ca.crt -trustcacerts -alias "WJZHIFU CA" -keystore WJZhiFuCA.jks
导入完成后,复制CA证书存储库到WebLogic的server/lib。

3.1.2.2 导入p7b的CA证书文件

P7b文件不能直接导入到存储库,应使用openssl工具将p7b文件转换为每证书一个der文件,然后参考上节导入各个文件。
转换p7b文件的命令如下:
openssl pkcs7 -in ca.p7b -out ca.txt -outform PEM -inform DEA -print_certs
编辑ca.txt文件,将每个-----BEGIN CERTIFICATE-----打头,-----END CERTIFICATE-----结束的证书内容分别复制到一个文件中,然后顺序导入各个文件。导入完成后,导入完成后,复制CA证书存储库到WebLogic的server/lib。

3.1.3 部署证书文件

(1) 启动WebLogic服务器,使用管理员登录到控制台;
(2) 编辑Environment?Server的配置。本例编辑AdminServer;
(3) 编辑Server的Keystore属性;

? Keystore选择为:Custom Identity and Custom Trust;
? Custom Identity Keystore: 添加Server证书存储库全路径名;
? Custom Identity Keystore Type: JKS
? 填写该Server存储库的密码;
? Custom Trust Keystore: 填写CA证书存储库的全路径名;
? Custom Trust Keystore Type: JKS
? 填写该CA存储库的密码;
? Save
(4) 编辑Server的SSL配置;

? Identity and Trust Locations: KeyStores
? PrivateKey Alias: 填写为Server存储库私钥的别名,即AdminServer;
? 填写Server存储库私钥的密码;
? Save。
至此,单向认证(客户端认证服务器)的SSL配置完成。

3.2 配置双向SSL认证

比照WebLogic服务器单向SSL认证的配置,完成服务器端的SSL配置,然后编辑Server?SSL?Advance配置。
? TwoWayClientCert:ClientCerts Requested and Enforced;
? Inbound Certificate Validation: Builtin SSL Validation And Cert Path Validators;
? Outbound Certificate Validation: Builtin SSL Validation And Cert Path Validators;
? Save
启用Server双向认证后,如果客户端没有相应的证书,则无法连接服务器。


4. 修改和忘记weblogic console密码解决方法

修改Console密码:
打开weblogic控制台   
1、Domain Configurations ----> Your Application's Security Settings   
-------->  Realms   
2、--> > myrealm -------->userManagement ---->Manage Users within this Security Realm   
3、------> 可以直接删除,也可以点击weblogic进行修改,我们点击修改   
 
修改完成后,再重新启动weblogic控制台,是不成功的,这时候我们把domain下的   
boot.properties文件 拿出来,就可以了   
但是每次启动 weblogic 的时候 都要输入 用户名和密码   
如果免去这个步骤,在boot.properties的里面把正确用户名和密码填上   
再返回domain下就可以了   
再次启动weblogic ,OK!


忘记Console密码解决方法:

步骤如下:
1.进入%DOMAIN_HOME%/security目录(xp运行cmd,linux-运行客户终端)
执行下列命令:

java -cp <weblogic_home>/wlserver_10.3/server/lib/weblogic.jar weblogic.security.utils.AdminAccount weblogic1 weblogic .
java -cp D:/oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar weblogic.security.utils.AdminAccount weblogic1 weblogic1 .

注意:最后的是 weblogic1空格weblogic空格点(为当前域添加admin新用户:weblogic1,密码:weblogic,其目的就是为了覆盖<domain_home>/security/文件下的DefaultAuthenticatorInit.ldift文件
2.cd到<domain_home>/servers/<AdminServer>/data/ldap
  rm DefaultAuthenticatormyrealmInit.initialized(xp系统直接删除DefaultAuthenticatormyrealmInit.initialized)
重启你的Server,用新帐号登录Admin Console,这样你就拥有了进入后台的admin用户和密码----
进入修改Console密码,你可以修改原用户weblogic 。
停止wls服务器------在%DOMAIN_HOME%/security/boot.properties,%DOMAIN_HOME%/boot.properties,填写你所使用的用户名密码。
使用你原使用的用户,weblogic 登陆console进入Security Realms-Users and Groups 删除 weblogic1.
Ok!


5. weblogic下spring+cxf开发的webservice获取httpservletrequest的方法(只列出主要的部分代码)

importjavax.xml.ws.WebServiceContext;

importjavax.xml.ws.handler.MessageContext;

 .......

@Resource

privateWebServiceContext wsContext;

MessageContextmc = null;

HttpServletRequesthttpServletRequest = null;

.......

try

{

    mc = wsContext.getMessageContext();

    httpServletRequest =(HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST);

}

catch(Exception e)

{

    logger.error(e.toString(),e);

}


0 0