JPA не может подключиться к SqlServer из пакета OSGi с помощью Bnd

Я занимаюсь разработкой с использованием Eclipse и рабочей области Bnd. У меня есть пакет приложений, а также пакет персистентности, который я настраиваю для доступа к базе данных SqlServer. Я работаю с SqlServer 2012.

Пакет приложения содержит файл resouce/OSGI-INF/configurator/configuration.json, который определяет параметры для подключения к базе данных. Эти параметры были бы ранее определены в файле persistence.xml. Файл persistence.xml находится в папке META-INF пакета постоянства.

Я могу запустить пакет приложений. При использовании базы данных Postgres таблицы генерируются, как и ожидалось, и отображаются в выходных данных. Когда файл configuration.json изменяется, чтобы иметь правильные параметры для подключения к SqlServer, таблицы не создаются.

configuration.json для postgres

{
    // Comments are explicitly permitted in configuration files.
    // To comply with strict JSON this file should be minified

    // Global Configuration file identity
    ":configurator:resource-version" : 1,
    ":configurator:symbolic-name" : "com.auth.persistence.config",
    ":configurator:version" : "1.0.0",

    "org.apache.aries.tx.control.jpa.xa~authPersist": {
        "name": "authentication.persistence.microservice",

        "osgi.jdbc.driver.class": "org.postgresql.Driver",
        "url": "jdbc:postgresql://127.0.0.1:5432/db",

        "osgi.unit.name": "persistence-pu",
        "user": "postgres",
        "password": "postgres"
    },

    // Target the Dao with the provider configuration above
    "com.auth.AuthenticationDao": {
        "authPersist.target": "(name=authentication.persistence.microservice)"
    }

}

configuration.json для SqlServer (для простоты я создал пользователя postgres / postgres на SqlServer вместе с тем же именем базы данных)

{
    // Comments are explicitly permitted in configuration files.
    // To comply with strict JSON this file should be minified

    // Global Configuration file identity
    ":configurator:resource-version" : 1,
    ":configurator:symbolic-name" : "com.auth.persistence.config",
    ":configurator:version" : "1.0.0",

    "org.apache.aries.tx.control.jpa.xa~authPersist": {
        "name": "authentication.persistence.microservice",

        "osgi.jdbc.driver.class": "com.microsoft.sqlserver.jdbc.SqlServerDriver",
        "url": "jdbc:sqlserver://127.0.0.1:1433/db",

        "osgi.unit.name": "persistence-pu",
        "user": "postgres",
        "password": "postgres"
    },

    // Target the Dao with the provider configuration above
    "com.auth.persistence.AuthenticationDao": {
        "authPersist.target": "(name=authentication.persistence.microservice)"
    }

}

persistence.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    version="2.1" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="persistence-pu">

    <!--description>AuthenticationPersistenceManager Persistence Unit</description-->

    <properties>

      <!-- 
        Add any static properties for the persistence unit in here, but avoid
        setting any runtime specific information, such as Database drivers or URLs 
      -->
      <property name="javax.persistence.schema-generation.create-database-schemas" value="true"/>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>

      <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
      <property name="javax.persistence.schema-generation.scripts.create-target" value="./create.sql" />
      <property name="javax.persistence.schema-generation.scripts.drop-target" value="./drop.sql" />

      <!-- populate the tables -->
      <property name="javax.persistence.sql-load-script-source" value="META-INF/default-data.sql"/>

      <property name="eclipselink.logging.logger" value="ServerLogger" />
      <property name="eclipselink.logging.logger" value="DefaultLogger" />
      <property name="eclipselink.logging.level.sql" value="FINE" />
    </properties>
  </persistence-unit>
</persistence>

Драйвер sqlserver, который я определил для использования,

com.microsoft.sqlserver:mssql-jdbc:jar:7.1.3.jre8-preview

Когда пакет начинается с postgres cfg, он показывает com.zaxxer.hikari.pool.HikariPool с установленными соединениями. Также показано удаление и создание таблиц и схем.

[EL Fine]: sql: 2018-12-08 09:32:05.138--ServerSession(1541284904)--SELECT 1
[EL Fine]: sql: 2018-12-08 09:32:05.138--ServerSession(1541284904)--Connection(979129822)--DROP TABLE auth.account_phone_map CASCADE
[EL Fine]: sql: 2018-12-08 09:32:05.138--ServerSession(1541284904)--SELECT 1
[EL Fine]: sql: 2018-12-08 09:32:05.138--ServerSession(1541284904)--Connection(1777688999)--DROP TABLE auth.system_user_phone_map CASCADE
[EL Fine]: sql: 2018-12-08 09:32:05.138--ServerSession(1541284904)--SELECT 1
[EL Fine]: sql: 2018-12-08 09:32:05.138--ServerSession(1541284904)--Connection(464276565)--DROP TABLE auth.system_user_role_type_map CASCADE
[EL Fine]: sql: 2018-12-08 09:32:05.138--ServerSession(1541284904)--SELECT 1
[EL Fine]: sql: 2018-12-08 09:32:05.138--ServerSession(1541284904)--Connection(210591570)--DROP SCHEMA auth
[EL Fine]: sql: 2018-12-08 09:32:05.153--ServerSession(1541284904)--Connection(1999155124)--CREATE SCHEMA auth
[EL Fine]: sql: 2018-12-08 09:32:05.153--ServerSession(1541284904)--Connection(297339340)--CREATE TABLE auth.authentication (AUTHENTICATIONID  SERIAL NOT NULL, ACTIVE BOOLEAN DEFAULT TRUE, created_time BYTEA, last_access_time BYTEA, TOKEN VARCHAR(100), user_id BIGINT, system_user_id BIGINT, PRIMARY KEY (AUTHENTICATIONID))
09:32:05.192 [HikariPool-1 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.apache.aries.tx.control.jdbc.xa.connection.impl.XAConnectionWrapper@582d0e9f
09:32:05.268 [HikariPool-1 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.apache.aries.tx.control.jdbc.xa.connection.impl.XAConnectionWrapper@3c28ae83
09:32:05.321 [HikariPool-1 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.apache.aries.tx.control.jdbc.xa.connection.impl.XAConnectionWrapper@cc1166f
[EL Fine]: sql: 2018-12-08 09:32:05.368--ServerSession(1541284904)--Connection(2067407812)--CREATE TABLE auth.security_question (security_question_id  SERIAL NOT NULL, question VARCHAR(255) NOT NULL, PRIMARY KEY (security_question_id))
09:32:05.399 [HikariPool-1 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.apache.aries.tx.control.jdbc.xa.connection.impl.XAConnectionWrapper@188f6e1e
[EL Fine]: sql: 2018-12-08 09:32:05.462--ServerSession(1541284904)--Connection(1365562508)--CREATE TABLE auth.role_type (role_type_id  SERIAL NOT NULL, is_admin BOOLEAN DEFAULT FALSE, role_type VARCHAR(20), PRIMARY KEY (role_type_id))
09:32:05.477 [HikariPool-1 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.apache.aries.tx.control.jdbc.xa.connection.impl.XAConnectionWrapper@5051c763
09:32:05.477 [HikariPool-1 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - After adding stats (total=10, active=2, idle=8, waiting=0)
[EL Fine]: sql: 2018-12-08 09:32:05.555--ServerSession(1541284904)--Connection(1669563419)--CREATE TABLE auth.mobile_provider (mobile_provider_id  SERIAL NOT NULL, CARRIER VARCHAR(100), GATEWAY VARCHAR(100), major_carrier BOOLEAN DEFAULT FALSE, PRIMARY KEY (mobile_provider_id))
[EL Fine]: sql: 2018-12-08 09:32:05.68--ServerSession(1541284904)--Connection(984417998)--CREATE TABLE auth.phone (phone_id  SERIAL NOT NULL, extension VARCHAR(7), is_mobile BOOLEAN, phone_number VARCHAR(20), mobile_provider_id BIGINT, phone_type_id BIGINT, PRIMARY KEY (phone_id))
[EL Fine]: sql: 2018-12-08 09:32:05.79--ServerSession(1541284904)--Connection(279127644)--CREATE TABLE auth.account (account_id  SERIAL NOT NULL, active BOOLEAN DEFAULT TRUE, disabled BOOLEAN DEFAULT FALSE, EMAIL VARCHAR(100), KEY VARCHAR(25) NOT NULL UNIQUE, NAME VARCHAR(100) NOT NULL UNIQUE, URL VARCHAR(100), account_type_id BIGINT NOT NULL, address_id BIGINT, PRIMARY KEY (account_id))
[EL Fine]: sql: 2018-12-08 09:32:06.165--ServerSession(1541284904)--Connection(1729384560)--CREATE TABLE auth.address (address_id  SERIAL NOT NULL, address_line_1 VARCHAR(100), address_line_2 VARCHAR(100), CITY VARCHAR(50), STATE VARCHAR(25), ZIPCODE VARCHAR(10), PRIMARY KEY (address_id))
[EL Fine]: sql: 2018-12-08 09:32:06.305--ServerSession(1541284904)--Connection(407413717)--CREATE TABLE auth.phone_type (phone_type_id  SERIAL NOT NULL, is_mobile BOOLEAN DEFAULT FALSE, phone_type VARCHAR(10), PRIMARY KEY (phone_type_id))
[EL Fine]: sql: 2018-12-08 09:32:06.43--ServerSession(1541284904)--Connection(1249992036)--CREATE TABLE auth.account_type (account_type_id  SERIAL NOT NULL, account_type VARCHAR(100) UNIQUE, is_master BOOLEAN DEFAULT FALSE, PRIMARY KEY (account_type_id))
[EL Fine]: sql: 2018-12-08 09:32:06.696--ServerSession(1541284904)--Connection(1125716910)--CREATE TABLE auth.security_answer (security_answer_id  SERIAL NOT NULL, ANSWER VARCHAR(100) NOT NULL, QUESTION VARCHAR(255), user_defined_question BOOLEAN DEFAULT FALSE, security_question_id BIGINT, system_user_id BIGINT, PRIMARY KEY (security_answer_id))

У меня есть существующая база данных, использующая SqlServer, и хранимые процедуры в SqlServer, к которым я хотел бы получить доступ с помощью пакетов OSGi. Если вы знакомы с доступом к SqlServer с помощью рабочего пространства Bnd, мне нужна ваша помощь в решении этой проблемы.

Спасибо.

0 ответов

Другие вопросы по тегам