You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Fabio Jun Takada Chino (JIRA)" <ji...@apache.org> on 2018/08/18 20:17:00 UTC

[jira] [Comment Edited] (TOMEE-2223) Incorrect JPA entity used when running under docker

    [ https://issues.apache.org/jira/browse/TOMEE-2223?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16584908#comment-16584908 ] 

Fabio Jun Takada Chino edited comment on TOMEE-2223 at 8/18/18 8:16 PM:
------------------------------------------------------------------------

Hi Romain,

Since it is a very simple portable program, I did not enhanced the classes at build time.

The persistence.xml sets the transaction type to JTA and contains only 4 entities, 3 with IDs using a single string and 1 with a composite key of 2  strings. They are all stand-alone (no relationships). Furthermore, it defines the following properties:

{\{    }}<property name="javax.persistence.sharedCache.mode" value = "ENABLE_SELECTIVE" />
 \{{    }}<property name="openjpa.jdbc.DBDictionary" value="derby"/>
 \{{    }}<property name="openjpa.DataCacheTimeout" value="1000" />

The resource definition is inside a resources.xml inside the application directory and is defined as:

{{    <Resource id="aslwrds" type="DataSource">}}
 {{        JdbcDriver    org.apache.derby.jdbc.EmbeddedDriver}}
 {{        JdbcUrl        jdbc:derby:/shared/derby/database;create=false}}
 {{        UserName    username}}
 {{        Password    dummy}}
 {{        JtaManaged    true}}
 {{        ValidationQuery  SELECT 1 FROM SYSIBM.SYSDUMMY1}}
 {{    </Resource>}}

The TomEE configuration was not tweaked (it uses the default configuration from apache-tomee-7.0.5-webprofile.tar.gz) plus the addition of the derby.jar from the package db-derby-10.14.2.0-bin.tar.gz inside the directory lib.

The application was deployed alone, by replacing all contents of the subdirectory webapps from original package with a single directory webapps/ROOT with the uncompressed war inside.

If you need something else, please let me know.

Fabio

 


was (Author: fjtc):
Hi Romain,

Since it is a very simple portable program, I did not enhanced the classes at build time.

The persistence.xml sets the transaction type to JTA and contains only 4 entities, 3 with IDs using a single string and 1 with a composite key of 2  strings. They are all stand-alone (no relationships). Furthermore, it defines the following properties:

{{    }}<property name="javax.persistence.sharedCache.mode" value = "ENABLE_SELECTIVE" />
{{    }}<property name="openjpa.jdbc.DBDictionary" value="derby"/>
{{    }}<property name="openjpa.DataCacheTimeout" value="1000" />

The resource definition is inside a resources.xml inside the application directory and is defined as:

{{    <Resource id="aslwrds" type="DataSource">}}
{{        JdbcDriver    org.apache.derby.jdbc.EmbeddedDriver}}
{{        JdbcUrl        jdbc:derby:/shared/derby/database;create=false}}
{{        UserName    username}}
{{        Password    dummy}}
{{        JtaManaged    true}}
{{        ValidationQuery  SELECT 1 FROM SYSIBM.SYSDUMMY1}}
{{    </Resource>}}

The TomEE configuration was not tweaked (it uses the default configuration from apache-tomee-7.0.5-webprofile.tar.gz) plus the addition of the derby.jar from the package db-derby-10.14.2.0-bin.tar.gz inside the directory lib.

The application was deployed alone, by replacing all contents of the subdirectory webapps from original package with a single directory webapps/ROOT with the uncompressed war inside.

If you need something else, please let me know.

Fabio

 

 

 

 

 

 

 

> Incorrect JPA entity used when running under docker
> ---------------------------------------------------
>
>                 Key: TOMEE-2223
>                 URL: https://issues.apache.org/jira/browse/TOMEE-2223
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>    Affects Versions: 7.0.5
>         Environment: * Docker version 17.12.1-ce, build 7390fc6;
> * Official Ubuntu 18.04 (x64) docker image with OpenJDK 8 installed;
> * apache-tomee-webprofile-7.0.5;
> * Apache Derby 10.14.2.0 (embedded);
>            Reporter: Fabio Jun Takada Chino
>            Priority: Minor
>
> While packing a very simple web application inside a docker container based on the official Ubuntu 18.04 image, I found a very inconvenient error related to OpenJPA using the wrong entity to access the database.
> When it happens, the following exception can be found in the log:
> {{org.apache.openjpa.persistence.ArgumentException : The given value "test" cannot be converted into an identity for "class EntityB".  The value is the wrong type (java.lang.String)}}{{ using the wrong entity to store information inside}}
> The major problem with this code is that the actual method is trying to access the entity EntityA instead of EntityB. The conversion error occurs because the ID for EntityB is a composite value while the ID for EntityA is indeed a string.
> Given that, I tried to trace the issue using a remote debugger but, when I activate, the problem vanishes. It does not matter if the debugger is connected or not. Since it is not a critical application, I can workaround it by leaving the remote debugger enabled but it would be a real issue for production environment.
> The docker image I'm using as the base can be found in the Docker Hub with the name opencs/ubuntu-openjdk-8-headless.
> The application is a single WAR file with some EJBs, JPA entities, a few servlets and a few JSF pages. Almost all JPA entities have single primary keys but one of them have a composite key with 2 strings.
> Thanks in advance,
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)