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接口与项目中的Hibernate的hibernate-jpa-2.0-api-1.0.1.Final.jar有冲突,无法部署启动项目,还有就是Weblogic内置的一些版本比较老的jar与项目中使用的也有冲突

WebLogic发布的主要内容有以下几点

  一、升级jdk(针对原有 12)

WEBLOGIC 修改一下配置,即可

     F:\ORACLE\weblogic\user_projects\domains\dev_domain\bin\setDomainEnv.cmd
set SUN_JAVA_HOME=D:\jdk1.7.0_65
set DEFAULT_SUN_JAVA_HOME=D:\jdk1.7.0_65
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配置文件

 <!--WizRtf2Html Charset=0 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:META-INF/mps-persistence.xml" />
<property name="dataSource" ref="dataSource" />
</bean>

注意:

<property name="persistenceXmlLocation" value="classpath:META-INF/mps-persistence.xml" />

  三、添加weblogic.xml

如果不添加这个weblogic.xml,将会报

  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内容如下:

 <?xml version="1.0" encoding="UTF-8"?>

 <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd">
<context-root>PosService</context-root>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
</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 反序列化 开源的坑
打补丁或是升级新版本。
 

感谢来自斯登闯前辈的指导。

上一篇:word20161227客厅家电


下一篇:.Net Core Linux centos7行—安装nginx,运行静态网站