weblogic 12c web部署注意的問題

廢話不多說下面講介紹他的具體部署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接口與項目中的Hibernatehibernate-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 JAR2.0)版本, 所以雖然Spring中定義使用 JPA2.1JAR, 但部署到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 頁面亂碼

  六、坑

  HTTP1.1 有個  Transfer-Encoding: chunked 特性  會造成內容 返回時 分多次返回(在建立連接後,有內容就輸出,不指定 CONTENT LENGTH)。非標準訪問時注意下。
  如POS 機訪問 WEBSERVICE
  七、bug
現象 解決 最優
<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 反序列化 開源的坑
打補丁或是升級新版本。
 

 感謝來自斯登闖前輩的指導。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章