确认WebLogic私有功能并修改

确认WebLogic私有功能

WebLogic除了提供标准的Java EE的接口外,还在此基础上实现了一些私有的功能,从开发者的角度来看,WebLogic提供些一些私有的API,私有的配置文件和私有的配置项。相关内容需在TomEE上修改。

修改私有配置项

同一个配置文件在WebLogic和TomEE上配置项内容可能不同,主要可能的不同点在于各个使用的Java EE组件上的配置或者是cluster上的配置,如:JPA持久化相关的meta-inf/persistence.xml。

配置项为WebLogic私有配置项的原因是有些配置需要指定实现类,比如JPA功能有哪一个class来实现、JDBC使用什么驱动。配置项需要仔细排查是否使用WebLogic私有配置(一个取巧判断方法是确认配置项是否包含weblogic、bea、oracle相关字符串)。

TomEE官网对WebLogic特定配置项的修改提供了一些的示例,如确认有WebLogic特定配置项,可参看TomEE官网进行修改(http://tomee.apache.org/latest/examples/)。

下面本文以创建对应数据库,指定正确的JDBC数据源,进行相关配置为例,展现修改私有配置项的过程。

  1. 修改META-INF/persistence.xml。

    • 修改前:
      <persistence-unit name="annotationServlet" transaction-type="RESOURCE_LOCAL">
          <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
          <class>examples.webapp.servlets.annotations.Visitor</class>
          <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/examples;create=true"/>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="javax.persistence.jdbc.user" value="examples"/>
            <property name="javax.persistence.jdbc.password" value="examples"/>
            <property name="eclipselink.ddl-generation" value="create-tables"/>
          </properties>
        </persistence-unit>
    • 修改后:
      <persistence-unit name="annotationServlet" transaction-type="RESOURCE_LOCAL">
          <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
              <non-jta-data-source>MySQL_Database</non-jta-data-source>
              <class>examples.webapp.servlets.annotations.Visitor</class>
              <properties>
                <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
              </properties>
        </persistence-unit>

  2. 创建example_mysql数据库,将对应的MYSQL连接驱动(例如:mysql-connector-Java-8.0.19.jar)复制到TomEE的lib目录下。
  3. 指定JDBC数据源:在conf目录下新增tomee.xml文件,内容如下。

    <Resource id="MySQL_Database" type="DataSource">
        JdbcDriver=com.mysql.jdbc.Driver
        JdbcUrl=jdbc:mysql://localhost:3306/example
        UserName=root
        password=admin
        JtaManaged=false
    </Resource>