廢話不多說下面講介紹他的具體部署web應用,應該注意哪些問題。
準備工作:
Java JDK 安裝及環境配置
http://jingyan.baidu.com/article/ff41162596a77912e4823716.html
WebLogic 12c 安裝包可以去官網下載,也可以去我的雲盤下載
https://yunpan.cn/cvKmivqjrfE6C 訪問密碼 19e2
WebLogic12c 安裝步驟請查看另一篇文章
http://blog.csdn.net/hanxuemin12345/article/details/46291189
注意第五個步驟時,選擇服務器jdk安裝的位置。
Weblogic10.x只支持JPA1.X,不支持JPA2.X,內置的JPA接口與項目中的Hibernate的hibernate-jpa-2.0-api-1.0.1.Final.jar有衝突,無法部署啓動項目,還有就是Weblogic內置的一些版本比較老的jar與項目中使用的也有衝突
WebLogic發佈的主要內容有以下幾點
一、升級jdk(針對原有 12)
WEBLOGIC 修改一下配置,即可
1 F:\ORACLE\weblogic\user_projects\domains\dev_domain\bin\setDomainEnv.cmd 2 set SUN_JAVA_HOME=D:\jdk1.7.0_65 3 set DEFAULT_SUN_JAVA_HOME=D:\jdk1.7.0_65 4 set JAVA_HOME=D:\jdk1.7.0_65
注意:<D:\jdk1.7.0_65> 這是我本機的jdk 位置,要根據您服務器的jdk選擇具體目錄
如果你在安裝weblogic的時候,選擇了本地安裝的jdk位置路徑這一個步驟可以省略。
二、更改 persistence.xml名稱
我們不想在部署時讓Weblogic自動加載persistence.xml文件,所以必須要重命名,比如mps-persistence.xml,然後修改Spring配置文件
1 <!--WizRtf2Html Charset=0 --> 2 <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 3 <property name="persistenceXmlLocation" value="classpath:META-INF/mps-persistence.xml" /> 4 <property name="dataSource" ref="dataSource" /> 5 </bean>
注意:
<property name="persistenceXmlLocation" value="classpath:META-INF/mps-persistence.xml" />
三、添加weblogic.xml
如果不添加這個weblogic.xml,將會報
1 Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]: Factory method 'entityManagerFactory' threw exception; nested exception is Java.lang.NoSuchMethodError : javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey.……
引起改問題的主要原因是 JPA 2.1 規範中定義了javax.persistence.JoinColumn.foreignKey(); 但是JPA 2.0中卻沒有, WebLogic 默認會優先使用自己的JPA JAR(2.0)版本, 所以雖然Spring中定義使用 JPA2.1的JAR, 但部署到Weblogic後會不起作用, 引起錯誤。
XML內容如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd 5 http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd"> 6 <context-root>PosService</context-root> 7 <container-descriptor> 8 <prefer-web-inf-classes>true</prefer-web-inf-classes> 9 <show-archived-real-path-enabled>true</show-archived-real-path-enabled> 10 </container-descriptor> 11 </weblogic-web-app>
四、Jpa2.0應用
在%WLS_HOME%\modules\ 目錄中添加 hibernate-jpa-2.1-api-1.0.0.Final.jar
更改 startweblogic.cmd 文件【 set CLASSPATH=%WL_HOME%\modules\hibernate-jpa-2.1-api-1.0.0.Final.jar;%WL_HOME%\lib\mbeantypes\WantongTechAuthenticator.jar;%SAVE_CLASSPATH% 】
hibernate-jpa-2.1-api-1.0.0.Final.jar下載 https://yunpan.cn/cvZeTSqPd3qE7 訪問密碼 246a
五、目錄中UTF-8項目sitemesh 頁面亂碼
六、坑
現象 | 解決 | 最優 |
<Error> <HTTP> <BEA-101083> <Error> <Socket> <BEA-000403> 你的主機中的軟件中止了一個已建立的連接。 |
據說是weblogic12.1.2的一個bug , 官方出了一個補丁,補丁編號:18373180: MERGE REQUEST ON TOP OF 12.1.2.0.0 FOR BUGS 16851678 18073982解決這個問題 最近WEBLOGIC SUPPORT 在維護 http://support.oracle.com/ 附件暫緩上傳。或直接安裝 12.1.2以後的版本 |
部署這個版本 weblogic 12.2.1 |
java 反序列化 | 開源的坑 打補丁或是升級新版本。 |
感謝來自斯登闖前輩的指導。