You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by John Patrick <nh...@gmail.com> on 2013/07/09 18:50:27 UTC

Maven and JPA/EclipseLink Configuration...

I'm working on a project that uses JPA EclipseLink, everything started of
fine with Jetty for developers development and WebLogic and Oracle proper
ear deployments.

EclipseLink has two values that need to be set in persistence.xml depending
upon your Application Server and Database;
eclipselink.target-server
eclipselink.target-database

This mean we have two profiles, Jetty and Release.

Now we support WebSphere and DB2, so have gone to 5 profiles and the need
to rebuild the ear 4 times which each profile.

Profiles
Jetty
WLSOracle
WLSDB2
WASOracle
WASDB2

I feel I'm doing something wrong...

Does someone have any suggestions on what to look at so i could potentially
build it once and get all the 4 ears build in one command? I've thought
about types or classifiers but unsure if that is just another hack...

Thoughts? As we soon might also need to support MySQL and Glassfish so
their is another 5 profiles and 5 more builds for a release.

John

Re: Maven and JPA/EclipseLink Configuration...

Posted by Ron Wheeler <rw...@artifact-software.com>.
I agree with a lot of the JCP description of the deployer role.
I also think that they are oriented to a small portion of the deployment 
world.
Most of the time the person doing deployments has a third party product 
from a vendor and does not have the source code and does not even have 
any documentation other than what the vendor provides.

I agree with the separation of church and state that they advocate for 
internally developed applications.
I have always recommended that developers who are doing both roles (in 
small and medium shops), try to remember which hat they are wearing when 
working at the border of development and deployment.
The developer should deliver something that can be deployed in the 
supported environment by someone who is an expert in the operating 
environment but not a programmer and certainly not an expert is the 
middleware on which the system is built.

I will stick with my recommendation that the best way to support 
multiple deployment configurations in a commercial product, is an 
interactive installer that, at deployment time,  can tweak or select 
from a set of configuration files included in the artifacts.
These artifacts should be developed by Maven.

Creating individual Maven artifacts for each deployment combination will 
result in a set that doubles (or more) each time an option is added.

Ron


On 10/07/2013 11:45 AM, Stephen Connolly wrote:
> On 10 July 2013 15:52, Ron Wheeler <rwheeler@artifact-software.com 
> <ma...@artifact-software.com>> wrote:
>
>     On 10/07/2013 10:06 AM, Stephen Connolly wrote:
>>     Well if it is an interactive installer then it can do the
>>     configuration for you...
>>
>     It needs to be interactive in some way if you want to handle a
>     variety of environments.
>
>     ./configure
>     make
>     install
>     (you hope that you don't end up with something this complex!!!)
>
>     or  questions during msi or rpm installs.
>
>
>>     But with a JavaEE application you don't know:
>>
>>     1. What application container they have
>>     2. What database they have
>>     3. Where the application container picks up deployed apps
>>     4. How the user wants the app deployed in the application container
>>     ...
>
>     These are all questions that can be asked and are somewhat limited
>     by the configurations that your application supports.
>     I would think that the answer to question 1 limits the possible
>     responses to 3 and 4.
>
>     The application designer  usually limits the supported
>     configurations in some way so that they do not have to create and
>     distribute a lot of configuration files if they are using Maven to
>     build the final war file that has to handle the whole range of
>     deployment environments.
>
>
> Well getting back to the OP, they were saying that they are expanding 
> the supported list of platforms... so it looks like their designer is 
> getting more fast and loose with QA (because QA will only be doing 
> touchstone testing on the entire matrix of combinations)
>
>     As a frequent deployer and a less frequent developer, I prefer an
>     installer that encapsulates the developers supported tweaking
>     rather than a complex process that requires me to manually modify
>     configuration files based on my understanding of the developers
>     documentation.
>
>
> I am not saying you're wrong... I am saying that the JavaEE spec does 
> not share your point of view...
>
> The ideal Maven way is one .ear that works for everyone without 
> modification. The JavaEE spec and the way application containers are 
> implemented makes that harder to achieve for some scopes (e.g. 
> persistence.xml)
>
>     I generally have very little idea about the internal architecture
>     since I might have to install 50 packages to get a server set up
>     and don't have the time to learn each one and read the code and
>     configuration file documentation to find the things to change.
>
>
> Take it up with the JCP ;-)
>
>     I want to get something that the programmer has tested and will
>     install on the supported configuration with as few places for me 
>     to make mistakes, as possible.
>
>
> Which is why I recommended having Maven do the repacking for them... 
> just using one module for each target platform...
>
> Note that this may mean that they have 20 or 30 repack modules... so 
> be it!!! Following the Maven way typically results in discovering pain 
> at things which are not best practice... the need to have NxM 
> repack-ear modules highlights the pain introduced by poor application 
> server spec design
>
>
>
>
>>
>>     I can go on.
>>
>>     The less Windows centric world has installers that basically are
>>     non-interactive, e.g. RPM, DEB, etc
>>
>>     This type of installer typically would be installing both the
>>     application and container... thus the question is moot.
>>
>>     An example of this is the various ways you can install Jenkins:
>>
>>     1. Jenkins.war (as self-executing war file)
>>     2. Jenkins.war in your container of choice
>>     3. RPM
>>     4. DEB
>>     5. PKG
>>     6. Windows installer
>>     7. Mac installer
>>
>>     All except the .WAR based distributions make assumptions about
>>     how to deploy the application.
>>
>>     If you want to install Jenkins on RedHat, you grab the RPM and
>>     install that... but if you don't like the way that configures
>>     Jenkins, then you can grab your container of choice, grab the
>>     .war and deploy that in your container using your container's
>>     deployment toolchain.
>>
>>     Installers are not the solution to this problem... in fact to my
>>     mind, other than windows, they are often an anti-pattern...
>>
>>     Though with puppet/chef what you typically do is wrap up the
>>     application you want in an installer that depends on an installer
>>     you created for your container of choice and then drops the
>>     application into the correct directory... that simplifies your
>>     puppet/chef scripts as they just interact with the platform's
>>     package management infrastructure... but you are still back to
>>     the Ops team creating the installer not the dev team
>>
>>
>>     On 10 July 2013 14:39, Ron Wheeler
>>     <rwheeler@artifact-software.com
>>     <ma...@artifact-software.com>> wrote:
>>
>>         Where does an installer fit in this vision?
>>
>>         It seems to me, having installed thousands of programs as a
>>         Windows user and Linux system administrator, that a lot of
>>         the discussion about deployment issues seem to ignore the
>>         role of installers (rpm, msi, izPack, etc.).
>>
>>         They are specifically designed to tweak packages during
>>         deployment.
>>
>>         They can be set up very easily to be very smart about using
>>         input from the Application Deployer and Administrator or from
>>         the environment directly, to customize the installed application.
>>
>>         Ron
>>
>>
>>
>>         On 10/07/2013 4:23 AM, Stephen Connolly wrote:
>>
>>             Well the first thing I would look towards is whether you
>>             can use an
>>             application server specific deployment descriptor to
>>             tweak the effective
>>             persistence.xml at deployment time.
>>
>>             I am not saying that the above is possible, but if it is,
>>             then that is
>>             obviously "the way to go" as you then can just bundle all
>>             the application
>>             server specific deployment descriptors into the .ear and
>>             you have one .ear
>>             that works for everyone.
>>
>>             I have a constant battle with people in work who feel
>>             that application
>>             server specific deployment descriptors are an
>>             anti-pattern... and if you
>>             think it is ok to follow the JavaEE spec's vision of the
>>             deployment
>>             process, then that may indeed be a valid view... but the
>>             real world does
>>             not work that way... and hence you need the application
>>             server specific
>>             deployment descriptors.
>>
>>             Ok let's take a step back, and look at where I am coming
>>             from.
>>
>>             The JavaEE spec lists a role of application deployer:
>>
>>             *# Application Deployer and Administrator
>>
>>                 *The application deployer and administrator is the
>>                 company or person who
>>
>>                 configures and deploys application clients, web
>>                 applications, Enterprise
>>                 JavaBeans components, and Java EE applications,
>>                 administers the computing
>>                 and networking infrastructure where Java EE
>>                 components and applications
>>                 run, and oversees the runtime environment. Duties
>>                 include setting
>>                 transaction controls and security attributes and
>>                 specifying connections to
>>                 databases.
>>                 During configuration, the deployer follows
>>                 instructions supplied by the
>>                 application component provider to resolve external
>>                 dependencies, specify
>>                 security settings, and assign transaction attributes.
>>                 During installation,
>>                 the deployer moves the application components to the
>>                 server and generates
>>                 the container-specific classes and interfaces.
>>                 A deployer or system administrator performs the
>>                 following tasks to install
>>                 and configure a Java EE application or components:
>>                 * Configures the Java EE application or components
>>                 for the operational
>>                 environment
>>                 * Verifies that the contents of the EAR, JAR, and/or
>>                 WAR files are well
>>                 formed and comply with the Java EE specification
>>                 * Deploys (installs) the Java EE application or
>>                 components into the Java
>>                 EE server
>>
>>
>>             *Source:
>>             http://docs.oracle.com/javaee/6/tutorial/doc/bnaca.html*
>>             *
>>
>>             *
>>             Now the "vision" is thus that whoever is deploying the
>>             application will
>>             essentially "crack open" the .ear, tweak the deployment
>>             descriptors and
>>             then seal it back up again (that is meaning of the
>>             "Configures the Java EE
>>             application or components for the operational
>>             environment" step which comes
>>             *before* deploying to the JavaEE server)
>>
>>             Of course where we hit issues is that we all view letting
>>             a human "crack
>>             open", "tweak", and "seal up again" a .ear as error
>>             prone, plus the people
>>             we are shipping the application to also view this as scary.
>>
>>             Now if I were the admin for such an app, I would use
>>             something like puppet
>>             or chef, etc to automate the open-tweak-seal process...
>>             but the biggest
>>             issue is tracablility.
>>
>>             If you have a .ear that is never the same as that shipped
>>             from the vendor
>>             (or from the release process) how do you know that it was
>>             the one that QA
>>             tested?
>>
>>             Instead of being able to do
>>
>>             sha1sum application.ear
>>
>>             you now have to open up the ear and do a diff of the
>>             contents against the
>>             reference .ear and potentially resolve differences in
>>             files that are
>>             permitted to have differences.
>>
>>             TL;DR the JavaEE spec vision is not something that you want
>>
>>             So then you decide that you want to release the app
>>             pre-configured for each
>>             deployment environment and all the remaining
>>             configuration should be picked
>>             up via JNDI or via files deployed to the classpath of the
>>             container (or
>>             maybe system properties or environment variables)
>>
>>             In an ideal world you can do it all from JNDI or system
>>             properties (JNDI
>>             being better as you do not pollute a global name space)
>>
>>             In the non-ideal world what you do is have your build
>>             system take on some
>>             of the roles of application deployer.
>>
>>             You have a module that produces the generic .ear
>>
>>             And then you have modules that unpack-tweak-repack the
>>             .ear targetting each
>>             app server/database
>>
>>             That is "the maven way" *but* it is not the way Maven
>>             wants you to work...
>>             Maven wants you to only have one .ear that works for
>>             all... the app servers
>>             are letting you down, and Maven is delivering pain for
>>             not following the
>>             best practice way of working.
>>
>>
>>             On 10 July 2013 08:33, John Patrick
>>             <nhoj.patrick@gmail.com <ma...@gmail.com>>
>>             wrote:
>>
>>                 On 10 Jul 2013, at 06:05, Baptiste MATHUS
>>                 <bmathus@batmat.net <ma...@batmat.net>> wrote:
>>
>>                     If those properties are specific to eclipselink,
>>                     then I think it's ok and
>>                     simpler to just leave them in the persistence.xml
>>                     even if they're
>>
>>                 actually
>>
>>                     not used when EclipseLink isn't the provider.
>>                     Then package only one ear.
>>
>>                     Cheers
>>
>>
>>                     2013/7/9 John Patrick <nhoj.patrick@gmail.com
>>                     <ma...@gmail.com>>
>>
>>                         I'm working on a project that uses JPA
>>                         EclipseLink, everything started
>>
>>                 of
>>
>>                         fine with Jetty for developers development
>>                         and WebLogic and Oracle
>>
>>                 proper
>>
>>                         ear deployments.
>>
>>                         EclipseLink has two values that need to be
>>                         set in persistence.xml
>>
>>                 depending
>>
>>                         upon your Application Server and Database;
>>                         eclipselink.target-server
>>                         eclipselink.target-database
>>
>>                         This mean we have two profiles, Jetty and
>>                         Release.
>>
>>                         Now we support WebSphere and DB2, so have
>>                         gone to 5 profiles and the
>>
>>                 need
>>
>>                         to rebuild the ear 4 times which each profile.
>>
>>                         Profiles
>>                         Jetty
>>                         WLSOracle
>>                         WLSDB2
>>                         WASOracle
>>                         WASDB2
>>
>>                         I feel I'm doing something wrong...
>>
>>                         Does someone have any suggestions on what to
>>                         look at so i could
>>
>>                 potentially
>>
>>                         build it once and get all the 4 ears build in
>>                         one command? I've thought
>>                         about types or classifiers but unsure if that
>>                         is just another hack...
>>
>>                         Thoughts? As we soon might also need to
>>                         support MySQL and Glassfish so
>>                         their is another 5 profiles and 5 more builds
>>                         for a release.
>>
>>                         John
>>
>>
>>
>>                     --
>>                     Baptiste <Batmat> MATHUS - http://batmat.net
>>                     Sauvez un arbre,
>>                     Mangez un castor !
>>
>>                 Mathus I think you miss understood my point. I need
>>                 to build 4
>>                 different ears currently as eclipselink auto
>>                 detections fails about
>>                 once a week and we can reproduce on demand.
>>
>>                 each ear has a different combination of values.
>>
>>                 ear 1 = WebLogic / Oracle
>>                 ear 2 = WebLogic / DB2
>>                 ear 3 = WebSphere / Oracle
>>                 ear 4 = WebSphere / DB2
>>
>>                 I can't build one ear, say ear 1 as the value for the
>>                 database setting
>>                 would be wrong when DB2 is the backend. Also the
>>                 value for the
>>                 application server would be wrong when deployed to
>>                 WebSphere.
>>
>>                 If eclipselink auto detect worked 100% I could create
>>                 one ear but a
>>                 few issues in production which we can't reproduce in
>>                 test on demand
>>                 mean we need to explicitly define application server
>>                 and database
>>                 server.
>>
>>                  From the off list replies it looks like others are
>>                 having similar
>>                 issues and doing similar things.
>>
>>                 cheers,
>>                 John
>>


-- 
Ron Wheeler
President
Artifact Software Inc
email: rwheeler@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


Re: Maven and JPA/EclipseLink Configuration...

Posted by Stephen Connolly <st...@gmail.com>.
On 10 July 2013 15:52, Ron Wheeler <rw...@artifact-software.com> wrote:

>  On 10/07/2013 10:06 AM, Stephen Connolly wrote:
>
> Well if it is an interactive installer then it can do the configuration
> for you...
>
>   It needs to be interactive in some way if you want to handle a variety
> of environments.
>
> ./configure
> make
> install
> (you hope that you don't end up with something this complex!!!)
>
> or  questions during msi or rpm installs.
>
>
>  But with a JavaEE application you don't know:
>
>  1. What application container they have
> 2. What database they have
> 3. Where the application container picks up deployed apps
> 4. How the user wants the app deployed in the application container
> ...
>
>
> These are all questions that can be asked and are somewhat limited by the
> configurations that your application supports.
> I would think that the answer to question 1 limits the possible responses
> to 3 and 4.
>
> The application designer  usually limits the supported configurations in
> some way so that they do not have to create and distribute a lot of
> configuration files if they are using Maven to build the final war file
> that has to handle the whole range of deployment environments.
>
>
Well getting back to the OP, they were saying that they are expanding the
supported list of platforms... so it looks like their designer is getting
more fast and loose with QA (because QA will only be doing touchstone
testing on the entire matrix of combinations)


> As a frequent deployer and a less frequent developer, I prefer an
> installer that encapsulates the developers supported tweaking rather than a
> complex process that requires me to manually modify configuration files
> based on my understanding of the developers documentation.
>

I am not saying you're wrong... I am saying that the JavaEE spec does not
share your point of view...

The ideal Maven way is one .ear that works for everyone without
modification. The JavaEE spec and the way application containers are
implemented makes that harder to achieve for some scopes (e.g.
persistence.xml)


> I generally have very little idea about the internal architecture since I
> might have to install 50 packages to get a server set up and don't have the
> time to learn each one and read the code and configuration file
> documentation to find the things to change.
>

Take it up with the JCP ;-)


> I want to get something that the programmer has tested and will install on
> the supported configuration with as few places for me  to make mistakes, as
> possible.
>
>
Which is why I recommended having Maven do the repacking for them... just
using one module for each target platform...

Note that this may mean that they have 20 or 30 repack modules... so be
it!!! Following the Maven way typically results in discovering pain at
things which are not best practice... the need to have NxM repack-ear
modules highlights the pain introduced by poor application server spec
design


>
>
>
>  I can go on.
>
>  The less Windows centric world has installers that basically are
> non-interactive, e.g. RPM, DEB, etc
>
>  This type of installer typically would be installing both the
> application and container... thus the question is moot.
>
>  An example of this is the various ways you can install Jenkins:
>
>  1. Jenkins.war (as self-executing war file)
> 2. Jenkins.war in your container of choice
> 3. RPM
> 4. DEB
> 5. PKG
> 6. Windows installer
> 7. Mac installer
>
>  All except the .WAR based distributions make assumptions about how to
> deploy the application.
>
>  If you want to install Jenkins on RedHat, you grab the RPM and install
> that... but if you don't like the way that configures Jenkins, then you can
> grab your container of choice, grab the .war and deploy that in your
> container using your container's deployment toolchain.
>
>  Installers are not the solution to this problem... in fact to my mind,
> other than windows, they are often an anti-pattern...
>
>  Though with puppet/chef what you typically do is wrap up the application
> you want in an installer that depends on an installer you created for your
> container of choice and then drops the application into the correct
> directory... that simplifies your puppet/chef scripts as they just interact
> with the platform's package management infrastructure... but you are still
> back to the Ops team creating the installer not the dev team
>
>
> On 10 July 2013 14:39, Ron Wheeler <rw...@artifact-software.com> wrote:
>
>> Where does an installer fit in this vision?
>>
>> It seems to me, having installed thousands of programs as a Windows user
>> and Linux system administrator, that a lot of the discussion about
>> deployment issues seem to ignore the role of installers (rpm, msi, izPack,
>> etc.).
>>
>> They are specifically designed to tweak packages during deployment.
>>
>> They can be set up very easily to be very smart about using input from
>> the Application Deployer and Administrator or from the environment
>> directly, to customize the installed application.
>>
>> Ron
>>
>>
>>
>> On 10/07/2013 4:23 AM, Stephen Connolly wrote:
>>
>>>  Well the first thing I would look towards is whether you can use an
>>> application server specific deployment descriptor to tweak the effective
>>> persistence.xml at deployment time.
>>>
>>> I am not saying that the above is possible, but if it is, then that is
>>> obviously "the way to go" as you then can just bundle all the application
>>> server specific deployment descriptors into the .ear and you have one
>>> .ear
>>> that works for everyone.
>>>
>>> I have a constant battle with people in work who feel that application
>>> server specific deployment descriptors are an anti-pattern... and if you
>>> think it is ok to follow the JavaEE spec's vision of the deployment
>>> process, then that may indeed be a valid view... but the real world does
>>> not work that way... and hence you need the application server specific
>>> deployment descriptors.
>>>
>>> Ok let's take a step back, and look at where I am coming from.
>>>
>>> The JavaEE spec lists a role of application deployer:
>>>
>>>  *# Application Deployer and Administrator
>>>
>>>> *The application deployer and administrator is the company or person
>>>> who
>>>>
>>>> configures and deploys application clients, web applications, Enterprise
>>>> JavaBeans components, and Java EE applications, administers the
>>>> computing
>>>> and networking infrastructure where Java EE components and applications
>>>> run, and oversees the runtime environment. Duties include setting
>>>> transaction controls and security attributes and specifying connections
>>>> to
>>>> databases.
>>>> During configuration, the deployer follows instructions supplied by the
>>>> application component provider to resolve external dependencies, specify
>>>> security settings, and assign transaction attributes. During
>>>> installation,
>>>> the deployer moves the application components to the server and
>>>> generates
>>>> the container-specific classes and interfaces.
>>>> A deployer or system administrator performs the following tasks to
>>>> install
>>>> and configure a Java EE application or components:
>>>> * Configures the Java EE application or components for the operational
>>>> environment
>>>> * Verifies that the contents of the EAR, JAR, and/or WAR files are well
>>>> formed and comply with the Java EE specification
>>>> * Deploys (installs) the Java EE application or components into the Java
>>>> EE server
>>>>
>>>
>>> *Source: http://docs.oracle.com/javaee/6/tutorial/doc/bnaca.html*
>>> *
>>>
>>> *
>>> Now the "vision" is thus that whoever is deploying the application will
>>> essentially "crack open" the .ear, tweak the deployment descriptors and
>>> then seal it back up again (that is meaning of the "Configures the Java
>>> EE
>>> application or components for the operational environment" step which
>>> comes
>>> *before* deploying to the JavaEE server)
>>>
>>> Of course where we hit issues is that we all view letting a human "crack
>>> open", "tweak", and "seal up again" a .ear as error prone, plus the
>>> people
>>> we are shipping the application to also view this as scary.
>>>
>>> Now if I were the admin for such an app, I would use something like
>>> puppet
>>> or chef, etc to automate the open-tweak-seal process... but the biggest
>>> issue is tracablility.
>>>
>>> If you have a .ear that is never the same as that shipped from the vendor
>>> (or from the release process) how do you know that it was the one that QA
>>> tested?
>>>
>>> Instead of being able to do
>>>
>>> sha1sum application.ear
>>>
>>> you now have to open up the ear and do a diff of the contents against the
>>> reference .ear and potentially resolve differences in files that are
>>> permitted to have differences.
>>>
>>> TL;DR the JavaEE spec vision is not something that you want
>>>
>>> So then you decide that you want to release the app pre-configured for
>>> each
>>> deployment environment and all the remaining configuration should be
>>> picked
>>> up via JNDI or via files deployed to the classpath of the container (or
>>> maybe system properties or environment variables)
>>>
>>> In an ideal world you can do it all from JNDI or system properties (JNDI
>>> being better as you do not pollute a global name space)
>>>
>>> In the non-ideal world what you do is have your build system take on some
>>> of the roles of application deployer.
>>>
>>> You have a module that produces the generic .ear
>>>
>>> And then you have modules that unpack-tweak-repack the .ear targetting
>>> each
>>> app server/database
>>>
>>> That is "the maven way" *but* it is not the way Maven wants you to
>>> work...
>>> Maven wants you to only have one .ear that works for all... the app
>>> servers
>>> are letting you down, and Maven is delivering pain for not following the
>>> best practice way of working.
>>>
>>>
>>> On 10 July 2013 08:33, John Patrick <nh...@gmail.com> wrote:
>>>
>>>  On 10 Jul 2013, at 06:05, Baptiste MATHUS <bm...@batmat.net> wrote:
>>>>
>>>>  If those properties are specific to eclipselink, then I think it's ok
>>>>> and
>>>>> simpler to just leave them in the persistence.xml even if they're
>>>>>
>>>> actually
>>>>
>>>>> not used when EclipseLink isn't the provider. Then package only one
>>>>> ear.
>>>>>
>>>>> Cheers
>>>>>
>>>>>
>>>>> 2013/7/9 John Patrick <nh...@gmail.com>
>>>>>
>>>>>  I'm working on a project that uses JPA EclipseLink, everything started
>>>>>>
>>>>>  of
>>>>
>>>>>  fine with Jetty for developers development and WebLogic and Oracle
>>>>>>
>>>>>  proper
>>>>
>>>>>  ear deployments.
>>>>>>
>>>>>> EclipseLink has two values that need to be set in persistence.xml
>>>>>>
>>>>>  depending
>>>>
>>>>>  upon your Application Server and Database;
>>>>>> eclipselink.target-server
>>>>>> eclipselink.target-database
>>>>>>
>>>>>> This mean we have two profiles, Jetty and Release.
>>>>>>
>>>>>> Now we support WebSphere and DB2, so have gone to 5 profiles and the
>>>>>>
>>>>>  need
>>>>
>>>>>  to rebuild the ear 4 times which each profile.
>>>>>>
>>>>>> Profiles
>>>>>> Jetty
>>>>>> WLSOracle
>>>>>> WLSDB2
>>>>>> WASOracle
>>>>>> WASDB2
>>>>>>
>>>>>> I feel I'm doing something wrong...
>>>>>>
>>>>>> Does someone have any suggestions on what to look at so i could
>>>>>>
>>>>>  potentially
>>>>
>>>>>  build it once and get all the 4 ears build in one command? I've
>>>>>> thought
>>>>>> about types or classifiers but unsure if that is just another hack...
>>>>>>
>>>>>> Thoughts? As we soon might also need to support MySQL and Glassfish so
>>>>>> their is another 5 profiles and 5 more builds for a release.
>>>>>>
>>>>>> John
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Baptiste <Batmat> MATHUS - http://batmat.net
>>>>> Sauvez un arbre,
>>>>> Mangez un castor !
>>>>>
>>>> Mathus I think you miss understood my point. I need to build 4
>>>> different ears currently as eclipselink auto detections fails about
>>>> once a week and we can reproduce on demand.
>>>>
>>>> each ear has a different combination of values.
>>>>
>>>> ear 1 = WebLogic / Oracle
>>>> ear 2 = WebLogic / DB2
>>>> ear 3 = WebSphere / Oracle
>>>> ear 4 = WebSphere / DB2
>>>>
>>>> I can't build one ear, say ear 1 as the value for the database setting
>>>> would be wrong when DB2 is the backend. Also the value for the
>>>> application server would be wrong when deployed to WebSphere.
>>>>
>>>> If eclipselink auto detect worked 100% I could create one ear but a
>>>> few issues in production which we can't reproduce in test on demand
>>>> mean we need to explicitly define application server and database
>>>> server.
>>>>
>>>>  From the off list replies it looks like others are having similar
>>>> issues and doing similar things.
>>>>
>>>> cheers,
>>>> John
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>>> For additional commands, e-mail: users-help@maven.apache.org
>>>>
>>>>
>>>>
>>
>> --
>> Ron Wheeler
>> President
>> Artifact Software Inc
>> email: rwheeler@artifact-software.com
>> skype: ronaldmwheeler
>> phone: 866-970-2435, ext 102
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>>
>
>
> --
> Ron Wheeler
> President
> Artifact Software Inc
> email: rwheeler@artifact-software.com
> skype: ronaldmwheeler
> phone: 866-970-2435, ext 102
>
>

Re: Maven and JPA/EclipseLink Configuration...

Posted by Ron Wheeler <rw...@artifact-software.com>.
On 10/07/2013 10:06 AM, Stephen Connolly wrote:
> Well if it is an interactive installer then it can do the 
> configuration for you...
>
It needs to be interactive in some way if you want to handle a variety 
of environments.

./configure
make
install
(you hope that you don't end up with something this complex!!!)

or  questions during msi or rpm installs.

> But with a JavaEE application you don't know:
>
> 1. What application container they have
> 2. What database they have
> 3. Where the application container picks up deployed apps
> 4. How the user wants the app deployed in the application container
> ...

These are all questions that can be asked and are somewhat limited by 
the configurations that your application supports.
I would think that the answer to question 1 limits the possible 
responses to 3 and 4.

The application designer  usually limits the supported configurations in 
some way so that they do not have to create and distribute a lot of 
configuration files if they are using Maven to build the final war file 
that has to handle the whole range of deployment environments.

As a frequent deployer and a less frequent developer, I prefer an 
installer that encapsulates the developers supported tweaking rather 
than a complex process that requires me to manually modify configuration 
files based on my understanding of the developers documentation.
I generally have very little idea about the internal architecture since 
I might have to install 50 packages to get a server set up and don't 
have the time to learn each one and read the code and configuration file 
documentation to find the things to change.
I want to get something that the programmer has tested and will install 
on the supported configuration with as few places for me  to make 
mistakes, as possible.



>
> I can go on.
>
> The less Windows centric world has installers that basically are 
> non-interactive, e.g. RPM, DEB, etc
>
> This type of installer typically would be installing both the 
> application and container... thus the question is moot.
>
> An example of this is the various ways you can install Jenkins:
>
> 1. Jenkins.war (as self-executing war file)
> 2. Jenkins.war in your container of choice
> 3. RPM
> 4. DEB
> 5. PKG
> 6. Windows installer
> 7. Mac installer
>
> All except the .WAR based distributions make assumptions about how to 
> deploy the application.
>
> If you want to install Jenkins on RedHat, you grab the RPM and install 
> that... but if you don't like the way that configures Jenkins, then 
> you can grab your container of choice, grab the .war and deploy that 
> in your container using your container's deployment toolchain.
>
> Installers are not the solution to this problem... in fact to my mind, 
> other than windows, they are often an anti-pattern...
>
> Though with puppet/chef what you typically do is wrap up the 
> application you want in an installer that depends on an installer you 
> created for your container of choice and then drops the application 
> into the correct directory... that simplifies your puppet/chef scripts 
> as they just interact with the platform's package management 
> infrastructure... but you are still back to the Ops team creating the 
> installer not the dev team
>
>
> On 10 July 2013 14:39, Ron Wheeler <rwheeler@artifact-software.com 
> <ma...@artifact-software.com>> wrote:
>
>     Where does an installer fit in this vision?
>
>     It seems to me, having installed thousands of programs as a
>     Windows user and Linux system administrator, that a lot of the
>     discussion about deployment issues seem to ignore the role of
>     installers (rpm, msi, izPack, etc.).
>
>     They are specifically designed to tweak packages during deployment.
>
>     They can be set up very easily to be very smart about using input
>     from the Application Deployer and Administrator or from the
>     environment directly, to customize the installed application.
>
>     Ron
>
>
>
>     On 10/07/2013 4:23 AM, Stephen Connolly wrote:
>
>         Well the first thing I would look towards is whether you can
>         use an
>         application server specific deployment descriptor to tweak the
>         effective
>         persistence.xml at deployment time.
>
>         I am not saying that the above is possible, but if it is, then
>         that is
>         obviously "the way to go" as you then can just bundle all the
>         application
>         server specific deployment descriptors into the .ear and you
>         have one .ear
>         that works for everyone.
>
>         I have a constant battle with people in work who feel that
>         application
>         server specific deployment descriptors are an anti-pattern...
>         and if you
>         think it is ok to follow the JavaEE spec's vision of the
>         deployment
>         process, then that may indeed be a valid view... but the real
>         world does
>         not work that way... and hence you need the application server
>         specific
>         deployment descriptors.
>
>         Ok let's take a step back, and look at where I am coming from.
>
>         The JavaEE spec lists a role of application deployer:
>
>         *# Application Deployer and Administrator
>
>             *The application deployer and administrator is the company
>             or person who
>
>             configures and deploys application clients, web
>             applications, Enterprise
>             JavaBeans components, and Java EE applications,
>             administers the computing
>             and networking infrastructure where Java EE components and
>             applications
>             run, and oversees the runtime environment. Duties include
>             setting
>             transaction controls and security attributes and
>             specifying connections to
>             databases.
>             During configuration, the deployer follows instructions
>             supplied by the
>             application component provider to resolve external
>             dependencies, specify
>             security settings, and assign transaction attributes.
>             During installation,
>             the deployer moves the application components to the
>             server and generates
>             the container-specific classes and interfaces.
>             A deployer or system administrator performs the following
>             tasks to install
>             and configure a Java EE application or components:
>             * Configures the Java EE application or components for the
>             operational
>             environment
>             * Verifies that the contents of the EAR, JAR, and/or WAR
>             files are well
>             formed and comply with the Java EE specification
>             * Deploys (installs) the Java EE application or components
>             into the Java
>             EE server
>
>
>         *Source: http://docs.oracle.com/javaee/6/tutorial/doc/bnaca.html*
>         *
>
>         *
>         Now the "vision" is thus that whoever is deploying the
>         application will
>         essentially "crack open" the .ear, tweak the deployment
>         descriptors and
>         then seal it back up again (that is meaning of the "Configures
>         the Java EE
>         application or components for the operational environment"
>         step which comes
>         *before* deploying to the JavaEE server)
>
>         Of course where we hit issues is that we all view letting a
>         human "crack
>         open", "tweak", and "seal up again" a .ear as error prone,
>         plus the people
>         we are shipping the application to also view this as scary.
>
>         Now if I were the admin for such an app, I would use something
>         like puppet
>         or chef, etc to automate the open-tweak-seal process... but
>         the biggest
>         issue is tracablility.
>
>         If you have a .ear that is never the same as that shipped from
>         the vendor
>         (or from the release process) how do you know that it was the
>         one that QA
>         tested?
>
>         Instead of being able to do
>
>         sha1sum application.ear
>
>         you now have to open up the ear and do a diff of the contents
>         against the
>         reference .ear and potentially resolve differences in files
>         that are
>         permitted to have differences.
>
>         TL;DR the JavaEE spec vision is not something that you want
>
>         So then you decide that you want to release the app
>         pre-configured for each
>         deployment environment and all the remaining configuration
>         should be picked
>         up via JNDI or via files deployed to the classpath of the
>         container (or
>         maybe system properties or environment variables)
>
>         In an ideal world you can do it all from JNDI or system
>         properties (JNDI
>         being better as you do not pollute a global name space)
>
>         In the non-ideal world what you do is have your build system
>         take on some
>         of the roles of application deployer.
>
>         You have a module that produces the generic .ear
>
>         And then you have modules that unpack-tweak-repack the .ear
>         targetting each
>         app server/database
>
>         That is "the maven way" *but* it is not the way Maven wants
>         you to work...
>         Maven wants you to only have one .ear that works for all...
>         the app servers
>         are letting you down, and Maven is delivering pain for not
>         following the
>         best practice way of working.
>
>
>         On 10 July 2013 08:33, John Patrick <nhoj.patrick@gmail.com
>         <ma...@gmail.com>> wrote:
>
>             On 10 Jul 2013, at 06:05, Baptiste MATHUS
>             <bmathus@batmat.net <ma...@batmat.net>> wrote:
>
>                 If those properties are specific to eclipselink, then
>                 I think it's ok and
>                 simpler to just leave them in the persistence.xml even
>                 if they're
>
>             actually
>
>                 not used when EclipseLink isn't the provider. Then
>                 package only one ear.
>
>                 Cheers
>
>
>                 2013/7/9 John Patrick <nhoj.patrick@gmail.com
>                 <ma...@gmail.com>>
>
>                     I'm working on a project that uses JPA
>                     EclipseLink, everything started
>
>             of
>
>                     fine with Jetty for developers development and
>                     WebLogic and Oracle
>
>             proper
>
>                     ear deployments.
>
>                     EclipseLink has two values that need to be set in
>                     persistence.xml
>
>             depending
>
>                     upon your Application Server and Database;
>                     eclipselink.target-server
>                     eclipselink.target-database
>
>                     This mean we have two profiles, Jetty and Release.
>
>                     Now we support WebSphere and DB2, so have gone to
>                     5 profiles and the
>
>             need
>
>                     to rebuild the ear 4 times which each profile.
>
>                     Profiles
>                     Jetty
>                     WLSOracle
>                     WLSDB2
>                     WASOracle
>                     WASDB2
>
>                     I feel I'm doing something wrong...
>
>                     Does someone have any suggestions on what to look
>                     at so i could
>
>             potentially
>
>                     build it once and get all the 4 ears build in one
>                     command? I've thought
>                     about types or classifiers but unsure if that is
>                     just another hack...
>
>                     Thoughts? As we soon might also need to support
>                     MySQL and Glassfish so
>                     their is another 5 profiles and 5 more builds for
>                     a release.
>
>                     John
>
>
>
>                 --
>                 Baptiste <Batmat> MATHUS - http://batmat.net
>                 Sauvez un arbre,
>                 Mangez un castor !
>
>             Mathus I think you miss understood my point. I need to build 4
>             different ears currently as eclipselink auto detections
>             fails about
>             once a week and we can reproduce on demand.
>
>             each ear has a different combination of values.
>
>             ear 1 = WebLogic / Oracle
>             ear 2 = WebLogic / DB2
>             ear 3 = WebSphere / Oracle
>             ear 4 = WebSphere / DB2
>
>             I can't build one ear, say ear 1 as the value for the
>             database setting
>             would be wrong when DB2 is the backend. Also the value for the
>             application server would be wrong when deployed to WebSphere.
>
>             If eclipselink auto detect worked 100% I could create one
>             ear but a
>             few issues in production which we can't reproduce in test
>             on demand
>             mean we need to explicitly define application server and
>             database
>             server.
>
>              From the off list replies it looks like others are having
>             similar
>             issues and doing similar things.
>
>             cheers,
>             John
>
>             ---------------------------------------------------------------------
>             To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>             <ma...@maven.apache.org>
>             For additional commands, e-mail:
>             users-help@maven.apache.org
>             <ma...@maven.apache.org>
>
>
>
>
>     -- 
>     Ron Wheeler
>     President
>     Artifact Software Inc
>     email: rwheeler@artifact-software.com
>     <ma...@artifact-software.com>
>     skype: ronaldmwheeler
>     phone: 866-970-2435, ext 102
>
>
>
>     ---------------------------------------------------------------------
>     To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>     <ma...@maven.apache.org>
>     For additional commands, e-mail: users-help@maven.apache.org
>     <ma...@maven.apache.org>
>
>


-- 
Ron Wheeler
President
Artifact Software Inc
email: rwheeler@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


Re: Maven and JPA/EclipseLink Configuration...

Posted by Stephen Connolly <st...@gmail.com>.
Well if it is an interactive installer then it can do the configuration for
you...

But with a JavaEE application you don't know:

1. What application container they have
2. What database they have
3. Where the application container picks up deployed apps
4. How the user wants the app deployed in the application container
...

I can go on.

The less Windows centric world has installers that basically are
non-interactive, e.g. RPM, DEB, etc

This type of installer typically would be installing both the application
and container... thus the question is moot.

An example of this is the various ways you can install Jenkins:

1. Jenkins.war (as self-executing war file)
2. Jenkins.war in your container of choice
3. RPM
4. DEB
5. PKG
6. Windows installer
7. Mac installer

All except the .WAR based distributions make assumptions about how to
deploy the application.

If you want to install Jenkins on RedHat, you grab the RPM and install
that... but if you don't like the way that configures Jenkins, then you can
grab your container of choice, grab the .war and deploy that in your
container using your container's deployment toolchain.

Installers are not the solution to this problem... in fact to my mind,
other than windows, they are often an anti-pattern...

Though with puppet/chef what you typically do is wrap up the application
you want in an installer that depends on an installer you created for your
container of choice and then drops the application into the correct
directory... that simplifies your puppet/chef scripts as they just interact
with the platform's package management infrastructure... but you are still
back to the Ops team creating the installer not the dev team


On 10 July 2013 14:39, Ron Wheeler <rw...@artifact-software.com> wrote:

> Where does an installer fit in this vision?
>
> It seems to me, having installed thousands of programs as a Windows user
> and Linux system administrator, that a lot of the discussion about
> deployment issues seem to ignore the role of installers (rpm, msi, izPack,
> etc.).
>
> They are specifically designed to tweak packages during deployment.
>
> They can be set up very easily to be very smart about using input from the
> Application Deployer and Administrator or from the environment directly, to
> customize the installed application.
>
> Ron
>
>
>
> On 10/07/2013 4:23 AM, Stephen Connolly wrote:
>
>> Well the first thing I would look towards is whether you can use an
>> application server specific deployment descriptor to tweak the effective
>> persistence.xml at deployment time.
>>
>> I am not saying that the above is possible, but if it is, then that is
>> obviously "the way to go" as you then can just bundle all the application
>> server specific deployment descriptors into the .ear and you have one .ear
>> that works for everyone.
>>
>> I have a constant battle with people in work who feel that application
>> server specific deployment descriptors are an anti-pattern... and if you
>> think it is ok to follow the JavaEE spec's vision of the deployment
>> process, then that may indeed be a valid view... but the real world does
>> not work that way... and hence you need the application server specific
>> deployment descriptors.
>>
>> Ok let's take a step back, and look at where I am coming from.
>>
>> The JavaEE spec lists a role of application deployer:
>>
>> *# Application Deployer and Administrator
>>
>>> *The application deployer and administrator is the company or person who
>>>
>>> configures and deploys application clients, web applications, Enterprise
>>> JavaBeans components, and Java EE applications, administers the computing
>>> and networking infrastructure where Java EE components and applications
>>> run, and oversees the runtime environment. Duties include setting
>>> transaction controls and security attributes and specifying connections
>>> to
>>> databases.
>>> During configuration, the deployer follows instructions supplied by the
>>> application component provider to resolve external dependencies, specify
>>> security settings, and assign transaction attributes. During
>>> installation,
>>> the deployer moves the application components to the server and generates
>>> the container-specific classes and interfaces.
>>> A deployer or system administrator performs the following tasks to
>>> install
>>> and configure a Java EE application or components:
>>> * Configures the Java EE application or components for the operational
>>> environment
>>> * Verifies that the contents of the EAR, JAR, and/or WAR files are well
>>> formed and comply with the Java EE specification
>>> * Deploys (installs) the Java EE application or components into the Java
>>> EE server
>>>
>>
>> *Source: http://docs.oracle.com/javaee/**6/tutorial/doc/bnaca.html*<http://docs.oracle.com/javaee/6/tutorial/doc/bnaca.html*>
>> *
>>
>> *
>> Now the "vision" is thus that whoever is deploying the application will
>> essentially "crack open" the .ear, tweak the deployment descriptors and
>> then seal it back up again (that is meaning of the "Configures the Java EE
>> application or components for the operational environment" step which
>> comes
>> *before* deploying to the JavaEE server)
>>
>> Of course where we hit issues is that we all view letting a human "crack
>> open", "tweak", and "seal up again" a .ear as error prone, plus the people
>> we are shipping the application to also view this as scary.
>>
>> Now if I were the admin for such an app, I would use something like puppet
>> or chef, etc to automate the open-tweak-seal process... but the biggest
>> issue is tracablility.
>>
>> If you have a .ear that is never the same as that shipped from the vendor
>> (or from the release process) how do you know that it was the one that QA
>> tested?
>>
>> Instead of being able to do
>>
>> sha1sum application.ear
>>
>> you now have to open up the ear and do a diff of the contents against the
>> reference .ear and potentially resolve differences in files that are
>> permitted to have differences.
>>
>> TL;DR the JavaEE spec vision is not something that you want
>>
>> So then you decide that you want to release the app pre-configured for
>> each
>> deployment environment and all the remaining configuration should be
>> picked
>> up via JNDI or via files deployed to the classpath of the container (or
>> maybe system properties or environment variables)
>>
>> In an ideal world you can do it all from JNDI or system properties (JNDI
>> being better as you do not pollute a global name space)
>>
>> In the non-ideal world what you do is have your build system take on some
>> of the roles of application deployer.
>>
>> You have a module that produces the generic .ear
>>
>> And then you have modules that unpack-tweak-repack the .ear targetting
>> each
>> app server/database
>>
>> That is "the maven way" *but* it is not the way Maven wants you to work...
>> Maven wants you to only have one .ear that works for all... the app
>> servers
>> are letting you down, and Maven is delivering pain for not following the
>> best practice way of working.
>>
>>
>> On 10 July 2013 08:33, John Patrick <nh...@gmail.com> wrote:
>>
>>  On 10 Jul 2013, at 06:05, Baptiste MATHUS <bm...@batmat.net> wrote:
>>>
>>>  If those properties are specific to eclipselink, then I think it's ok
>>>> and
>>>> simpler to just leave them in the persistence.xml even if they're
>>>>
>>> actually
>>>
>>>> not used when EclipseLink isn't the provider. Then package only one ear.
>>>>
>>>> Cheers
>>>>
>>>>
>>>> 2013/7/9 John Patrick <nh...@gmail.com>
>>>>
>>>>  I'm working on a project that uses JPA EclipseLink, everything started
>>>>>
>>>> of
>>>
>>>> fine with Jetty for developers development and WebLogic and Oracle
>>>>>
>>>> proper
>>>
>>>> ear deployments.
>>>>>
>>>>> EclipseLink has two values that need to be set in persistence.xml
>>>>>
>>>> depending
>>>
>>>> upon your Application Server and Database;
>>>>> eclipselink.target-server
>>>>> eclipselink.target-database
>>>>>
>>>>> This mean we have two profiles, Jetty and Release.
>>>>>
>>>>> Now we support WebSphere and DB2, so have gone to 5 profiles and the
>>>>>
>>>> need
>>>
>>>> to rebuild the ear 4 times which each profile.
>>>>>
>>>>> Profiles
>>>>> Jetty
>>>>> WLSOracle
>>>>> WLSDB2
>>>>> WASOracle
>>>>> WASDB2
>>>>>
>>>>> I feel I'm doing something wrong...
>>>>>
>>>>> Does someone have any suggestions on what to look at so i could
>>>>>
>>>> potentially
>>>
>>>> build it once and get all the 4 ears build in one command? I've thought
>>>>> about types or classifiers but unsure if that is just another hack...
>>>>>
>>>>> Thoughts? As we soon might also need to support MySQL and Glassfish so
>>>>> their is another 5 profiles and 5 more builds for a release.
>>>>>
>>>>> John
>>>>>
>>>>
>>>>
>>>> --
>>>> Baptiste <Batmat> MATHUS - http://batmat.net
>>>> Sauvez un arbre,
>>>> Mangez un castor !
>>>>
>>> Mathus I think you miss understood my point. I need to build 4
>>> different ears currently as eclipselink auto detections fails about
>>> once a week and we can reproduce on demand.
>>>
>>> each ear has a different combination of values.
>>>
>>> ear 1 = WebLogic / Oracle
>>> ear 2 = WebLogic / DB2
>>> ear 3 = WebSphere / Oracle
>>> ear 4 = WebSphere / DB2
>>>
>>> I can't build one ear, say ear 1 as the value for the database setting
>>> would be wrong when DB2 is the backend. Also the value for the
>>> application server would be wrong when deployed to WebSphere.
>>>
>>> If eclipselink auto detect worked 100% I could create one ear but a
>>> few issues in production which we can't reproduce in test on demand
>>> mean we need to explicitly define application server and database
>>> server.
>>>
>>>  From the off list replies it looks like others are having similar
>>> issues and doing similar things.
>>>
>>> cheers,
>>> John
>>>
>>> ------------------------------**------------------------------**
>>> ---------
>>> To unsubscribe, e-mail: users-unsubscribe@maven.**apache.org<us...@maven.apache.org>
>>> For additional commands, e-mail: users-help@maven.apache.org
>>>
>>>
>>>
>
> --
> Ron Wheeler
> President
> Artifact Software Inc
> email: rwheeler@artifact-software.com
> skype: ronaldmwheeler
> phone: 866-970-2435, ext 102
>
>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@maven.**apache.org<us...@maven.apache.org>
> For additional commands, e-mail: users-help@maven.apache.org
>
>

Re: Maven and JPA/EclipseLink Configuration...

Posted by Ron Wheeler <rw...@artifact-software.com>.
Where does an installer fit in this vision?

It seems to me, having installed thousands of programs as a Windows user 
and Linux system administrator, that a lot of the discussion about 
deployment issues seem to ignore the role of installers (rpm, msi, 
izPack, etc.).

They are specifically designed to tweak packages during deployment.

They can be set up very easily to be very smart about using input from 
the Application Deployer and Administrator or from the environment 
directly, to customize the installed application.

Ron


On 10/07/2013 4:23 AM, Stephen Connolly wrote:
> Well the first thing I would look towards is whether you can use an
> application server specific deployment descriptor to tweak the effective
> persistence.xml at deployment time.
>
> I am not saying that the above is possible, but if it is, then that is
> obviously "the way to go" as you then can just bundle all the application
> server specific deployment descriptors into the .ear and you have one .ear
> that works for everyone.
>
> I have a constant battle with people in work who feel that application
> server specific deployment descriptors are an anti-pattern... and if you
> think it is ok to follow the JavaEE spec's vision of the deployment
> process, then that may indeed be a valid view... but the real world does
> not work that way... and hence you need the application server specific
> deployment descriptors.
>
> Ok let's take a step back, and look at where I am coming from.
>
> The JavaEE spec lists a role of application deployer:
>
> *# Application Deployer and Administrator
>> *The application deployer and administrator is the company or person who
>> configures and deploys application clients, web applications, Enterprise
>> JavaBeans components, and Java EE applications, administers the computing
>> and networking infrastructure where Java EE components and applications
>> run, and oversees the runtime environment. Duties include setting
>> transaction controls and security attributes and specifying connections to
>> databases.
>> During configuration, the deployer follows instructions supplied by the
>> application component provider to resolve external dependencies, specify
>> security settings, and assign transaction attributes. During installation,
>> the deployer moves the application components to the server and generates
>> the container-specific classes and interfaces.
>> A deployer or system administrator performs the following tasks to install
>> and configure a Java EE application or components:
>> * Configures the Java EE application or components for the operational
>> environment
>> * Verifies that the contents of the EAR, JAR, and/or WAR files are well
>> formed and comply with the Java EE specification
>> * Deploys (installs) the Java EE application or components into the Java
>> EE server
>
> *Source: http://docs.oracle.com/javaee/6/tutorial/doc/bnaca.html*
> *
> *
> Now the "vision" is thus that whoever is deploying the application will
> essentially "crack open" the .ear, tweak the deployment descriptors and
> then seal it back up again (that is meaning of the "Configures the Java EE
> application or components for the operational environment" step which comes
> *before* deploying to the JavaEE server)
>
> Of course where we hit issues is that we all view letting a human "crack
> open", "tweak", and "seal up again" a .ear as error prone, plus the people
> we are shipping the application to also view this as scary.
>
> Now if I were the admin for such an app, I would use something like puppet
> or chef, etc to automate the open-tweak-seal process... but the biggest
> issue is tracablility.
>
> If you have a .ear that is never the same as that shipped from the vendor
> (or from the release process) how do you know that it was the one that QA
> tested?
>
> Instead of being able to do
>
> sha1sum application.ear
>
> you now have to open up the ear and do a diff of the contents against the
> reference .ear and potentially resolve differences in files that are
> permitted to have differences.
>
> TL;DR the JavaEE spec vision is not something that you want
>
> So then you decide that you want to release the app pre-configured for each
> deployment environment and all the remaining configuration should be picked
> up via JNDI or via files deployed to the classpath of the container (or
> maybe system properties or environment variables)
>
> In an ideal world you can do it all from JNDI or system properties (JNDI
> being better as you do not pollute a global name space)
>
> In the non-ideal world what you do is have your build system take on some
> of the roles of application deployer.
>
> You have a module that produces the generic .ear
>
> And then you have modules that unpack-tweak-repack the .ear targetting each
> app server/database
>
> That is "the maven way" *but* it is not the way Maven wants you to work...
> Maven wants you to only have one .ear that works for all... the app servers
> are letting you down, and Maven is delivering pain for not following the
> best practice way of working.
>
>
> On 10 July 2013 08:33, John Patrick <nh...@gmail.com> wrote:
>
>> On 10 Jul 2013, at 06:05, Baptiste MATHUS <bm...@batmat.net> wrote:
>>
>>> If those properties are specific to eclipselink, then I think it's ok and
>>> simpler to just leave them in the persistence.xml even if they're
>> actually
>>> not used when EclipseLink isn't the provider. Then package only one ear.
>>>
>>> Cheers
>>>
>>>
>>> 2013/7/9 John Patrick <nh...@gmail.com>
>>>
>>>> I'm working on a project that uses JPA EclipseLink, everything started
>> of
>>>> fine with Jetty for developers development and WebLogic and Oracle
>> proper
>>>> ear deployments.
>>>>
>>>> EclipseLink has two values that need to be set in persistence.xml
>> depending
>>>> upon your Application Server and Database;
>>>> eclipselink.target-server
>>>> eclipselink.target-database
>>>>
>>>> This mean we have two profiles, Jetty and Release.
>>>>
>>>> Now we support WebSphere and DB2, so have gone to 5 profiles and the
>> need
>>>> to rebuild the ear 4 times which each profile.
>>>>
>>>> Profiles
>>>> Jetty
>>>> WLSOracle
>>>> WLSDB2
>>>> WASOracle
>>>> WASDB2
>>>>
>>>> I feel I'm doing something wrong...
>>>>
>>>> Does someone have any suggestions on what to look at so i could
>> potentially
>>>> build it once and get all the 4 ears build in one command? I've thought
>>>> about types or classifiers but unsure if that is just another hack...
>>>>
>>>> Thoughts? As we soon might also need to support MySQL and Glassfish so
>>>> their is another 5 profiles and 5 more builds for a release.
>>>>
>>>> John
>>>
>>>
>>> --
>>> Baptiste <Batmat> MATHUS - http://batmat.net
>>> Sauvez un arbre,
>>> Mangez un castor !
>> Mathus I think you miss understood my point. I need to build 4
>> different ears currently as eclipselink auto detections fails about
>> once a week and we can reproduce on demand.
>>
>> each ear has a different combination of values.
>>
>> ear 1 = WebLogic / Oracle
>> ear 2 = WebLogic / DB2
>> ear 3 = WebSphere / Oracle
>> ear 4 = WebSphere / DB2
>>
>> I can't build one ear, say ear 1 as the value for the database setting
>> would be wrong when DB2 is the backend. Also the value for the
>> application server would be wrong when deployed to WebSphere.
>>
>> If eclipselink auto detect worked 100% I could create one ear but a
>> few issues in production which we can't reproduce in test on demand
>> mean we need to explicitly define application server and database
>> server.
>>
>>  From the off list replies it looks like others are having similar
>> issues and doing similar things.
>>
>> cheers,
>> John
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>>


-- 
Ron Wheeler
President
Artifact Software Inc
email: rwheeler@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Maven and JPA/EclipseLink Configuration...

Posted by Stephen Connolly <st...@gmail.com>.
Well the first thing I would look towards is whether you can use an
application server specific deployment descriptor to tweak the effective
persistence.xml at deployment time.

I am not saying that the above is possible, but if it is, then that is
obviously "the way to go" as you then can just bundle all the application
server specific deployment descriptors into the .ear and you have one .ear
that works for everyone.

I have a constant battle with people in work who feel that application
server specific deployment descriptors are an anti-pattern... and if you
think it is ok to follow the JavaEE spec's vision of the deployment
process, then that may indeed be a valid view... but the real world does
not work that way... and hence you need the application server specific
deployment descriptors.

Ok let's take a step back, and look at where I am coming from.

The JavaEE spec lists a role of application deployer:

*# Application Deployer and Administrator
> *The application deployer and administrator is the company or person who
> configures and deploys application clients, web applications, Enterprise
> JavaBeans components, and Java EE applications, administers the computing
> and networking infrastructure where Java EE components and applications
> run, and oversees the runtime environment. Duties include setting
> transaction controls and security attributes and specifying connections to
> databases.
> During configuration, the deployer follows instructions supplied by the
> application component provider to resolve external dependencies, specify
> security settings, and assign transaction attributes. During installation,
> the deployer moves the application components to the server and generates
> the container-specific classes and interfaces.
> A deployer or system administrator performs the following tasks to install
> and configure a Java EE application or components:
> * Configures the Java EE application or components for the operational
> environment
> * Verifies that the contents of the EAR, JAR, and/or WAR files are well
> formed and comply with the Java EE specification
> * Deploys (installs) the Java EE application or components into the Java
> EE server


*Source: http://docs.oracle.com/javaee/6/tutorial/doc/bnaca.html*
*
*
Now the "vision" is thus that whoever is deploying the application will
essentially "crack open" the .ear, tweak the deployment descriptors and
then seal it back up again (that is meaning of the "Configures the Java EE
application or components for the operational environment" step which comes
*before* deploying to the JavaEE server)

Of course where we hit issues is that we all view letting a human "crack
open", "tweak", and "seal up again" a .ear as error prone, plus the people
we are shipping the application to also view this as scary.

Now if I were the admin for such an app, I would use something like puppet
or chef, etc to automate the open-tweak-seal process... but the biggest
issue is tracablility.

If you have a .ear that is never the same as that shipped from the vendor
(or from the release process) how do you know that it was the one that QA
tested?

Instead of being able to do

sha1sum application.ear

you now have to open up the ear and do a diff of the contents against the
reference .ear and potentially resolve differences in files that are
permitted to have differences.

TL;DR the JavaEE spec vision is not something that you want

So then you decide that you want to release the app pre-configured for each
deployment environment and all the remaining configuration should be picked
up via JNDI or via files deployed to the classpath of the container (or
maybe system properties or environment variables)

In an ideal world you can do it all from JNDI or system properties (JNDI
being better as you do not pollute a global name space)

In the non-ideal world what you do is have your build system take on some
of the roles of application deployer.

You have a module that produces the generic .ear

And then you have modules that unpack-tweak-repack the .ear targetting each
app server/database

That is "the maven way" *but* it is not the way Maven wants you to work...
Maven wants you to only have one .ear that works for all... the app servers
are letting you down, and Maven is delivering pain for not following the
best practice way of working.


On 10 July 2013 08:33, John Patrick <nh...@gmail.com> wrote:

> On 10 Jul 2013, at 06:05, Baptiste MATHUS <bm...@batmat.net> wrote:
>
> > If those properties are specific to eclipselink, then I think it's ok and
> > simpler to just leave them in the persistence.xml even if they're
> actually
> > not used when EclipseLink isn't the provider. Then package only one ear.
> >
> > Cheers
> >
> >
> > 2013/7/9 John Patrick <nh...@gmail.com>
> >
> >> I'm working on a project that uses JPA EclipseLink, everything started
> of
> >> fine with Jetty for developers development and WebLogic and Oracle
> proper
> >> ear deployments.
> >>
> >> EclipseLink has two values that need to be set in persistence.xml
> depending
> >> upon your Application Server and Database;
> >> eclipselink.target-server
> >> eclipselink.target-database
> >>
> >> This mean we have two profiles, Jetty and Release.
> >>
> >> Now we support WebSphere and DB2, so have gone to 5 profiles and the
> need
> >> to rebuild the ear 4 times which each profile.
> >>
> >> Profiles
> >> Jetty
> >> WLSOracle
> >> WLSDB2
> >> WASOracle
> >> WASDB2
> >>
> >> I feel I'm doing something wrong...
> >>
> >> Does someone have any suggestions on what to look at so i could
> potentially
> >> build it once and get all the 4 ears build in one command? I've thought
> >> about types or classifiers but unsure if that is just another hack...
> >>
> >> Thoughts? As we soon might also need to support MySQL and Glassfish so
> >> their is another 5 profiles and 5 more builds for a release.
> >>
> >> John
> >
> >
> >
> > --
> > Baptiste <Batmat> MATHUS - http://batmat.net
> > Sauvez un arbre,
> > Mangez un castor !
>
> Mathus I think you miss understood my point. I need to build 4
> different ears currently as eclipselink auto detections fails about
> once a week and we can reproduce on demand.
>
> each ear has a different combination of values.
>
> ear 1 = WebLogic / Oracle
> ear 2 = WebLogic / DB2
> ear 3 = WebSphere / Oracle
> ear 4 = WebSphere / DB2
>
> I can't build one ear, say ear 1 as the value for the database setting
> would be wrong when DB2 is the backend. Also the value for the
> application server would be wrong when deployed to WebSphere.
>
> If eclipselink auto detect worked 100% I could create one ear but a
> few issues in production which we can't reproduce in test on demand
> mean we need to explicitly define application server and database
> server.
>
> From the off list replies it looks like others are having similar
> issues and doing similar things.
>
> cheers,
> John
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

Re: Maven and JPA/EclipseLink Configuration...

Posted by John Patrick <nh...@gmail.com>.
On 10 Jul 2013, at 06:05, Baptiste MATHUS <bm...@batmat.net> wrote:

> If those properties are specific to eclipselink, then I think it's ok and
> simpler to just leave them in the persistence.xml even if they're actually
> not used when EclipseLink isn't the provider. Then package only one ear.
>
> Cheers
>
>
> 2013/7/9 John Patrick <nh...@gmail.com>
>
>> I'm working on a project that uses JPA EclipseLink, everything started of
>> fine with Jetty for developers development and WebLogic and Oracle proper
>> ear deployments.
>>
>> EclipseLink has two values that need to be set in persistence.xml depending
>> upon your Application Server and Database;
>> eclipselink.target-server
>> eclipselink.target-database
>>
>> This mean we have two profiles, Jetty and Release.
>>
>> Now we support WebSphere and DB2, so have gone to 5 profiles and the need
>> to rebuild the ear 4 times which each profile.
>>
>> Profiles
>> Jetty
>> WLSOracle
>> WLSDB2
>> WASOracle
>> WASDB2
>>
>> I feel I'm doing something wrong...
>>
>> Does someone have any suggestions on what to look at so i could potentially
>> build it once and get all the 4 ears build in one command? I've thought
>> about types or classifiers but unsure if that is just another hack...
>>
>> Thoughts? As we soon might also need to support MySQL and Glassfish so
>> their is another 5 profiles and 5 more builds for a release.
>>
>> John
>
>
>
> --
> Baptiste <Batmat> MATHUS - http://batmat.net
> Sauvez un arbre,
> Mangez un castor !

Mathus I think you miss understood my point. I need to build 4
different ears currently as eclipselink auto detections fails about
once a week and we can reproduce on demand.

each ear has a different combination of values.

ear 1 = WebLogic / Oracle
ear 2 = WebLogic / DB2
ear 3 = WebSphere / Oracle
ear 4 = WebSphere / DB2

I can't build one ear, say ear 1 as the value for the database setting
would be wrong when DB2 is the backend. Also the value for the
application server would be wrong when deployed to WebSphere.

If eclipselink auto detect worked 100% I could create one ear but a
few issues in production which we can't reproduce in test on demand
mean we need to explicitly define application server and database
server.

>From the off list replies it looks like others are having similar
issues and doing similar things.

cheers,
John

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Maven and JPA/EclipseLink Configuration...

Posted by Baptiste MATHUS <bm...@batmat.net>.
If those properties are specific to eclipselink, then I think it's ok and
simpler to just leave them in the persistence.xml even if they're actually
not used when EclipseLink isn't the provider. Then package only one ear.

Cheers


2013/7/9 John Patrick <nh...@gmail.com>

> I'm working on a project that uses JPA EclipseLink, everything started of
> fine with Jetty for developers development and WebLogic and Oracle proper
> ear deployments.
>
> EclipseLink has two values that need to be set in persistence.xml depending
> upon your Application Server and Database;
> eclipselink.target-server
> eclipselink.target-database
>
> This mean we have two profiles, Jetty and Release.
>
> Now we support WebSphere and DB2, so have gone to 5 profiles and the need
> to rebuild the ear 4 times which each profile.
>
> Profiles
> Jetty
> WLSOracle
> WLSDB2
> WASOracle
> WASDB2
>
> I feel I'm doing something wrong...
>
> Does someone have any suggestions on what to look at so i could potentially
> build it once and get all the 4 ears build in one command? I've thought
> about types or classifiers but unsure if that is just another hack...
>
> Thoughts? As we soon might also need to support MySQL and Glassfish so
> their is another 5 profiles and 5 more builds for a release.
>
> John
>



-- 
Baptiste <Batmat> MATHUS - http://batmat.net
Sauvez un arbre,
Mangez un castor !

Re: Maven and JPA/EclipseLink Configuration...

Posted by Richard Vowles <ri...@bluetrainsoftware.com>.
On Wed, Jul 10, 2013 at 4:50 AM, John Patrick <nh...@gmail.com>wrote:

> I'm working on a project that uses JPA EclipseLink, everything started of
> fine with Jetty for developers development and WebLogic and Oracle proper
> ear deployments.
>
>
People still do that? Wow, thats educational in and of itself.

-- 
---
Richard Vowles,
Grails, Groovy, Java, Javascript, AngularJS
Consistency is the last refuge of the unimaginative - Oscar Wilde
ph: +64275467747, google+:http://rvowl.es/UX8Bmq
podcast: http://www.illegalargument.com

Re: Maven and JPA/EclipseLink Configuration...

Posted by Stephen Connolly <st...@gmail.com>.
Couldn't find it there either...

Also the spec does not allow the use of an EL in the persistence.xml, so
you can't even delegate to JNDI or system properties... only hope is
container specific overriding via deployment descriptors

OpenEJB (the good guy) supports this:
http://tomee.apache.org/alternate-descriptors.html

JBoss seems to have some way... but it is beyond what I can grok in 30sec

Glassfish doesn't seem to let you do that...


On 11 July 2013 10:29, Stephen Connolly <st...@gmail.com>wrote:

> It's not an EJB 3.1 thing... checking the 3.2 spec now
>
>
> On 11 July 2013 10:22, christofer.dutz@c-ware.de <
> christofer.dutz@c-ware.de> wrote:
>
>> Well it should be possible as the PersistenceUnitManager is more a JPA
>> Thing and not restricted to Spring. In my example it is just configured
>> using Spring. Think it should be possible to do this an a JavaEE
>> application (Perhaps I should find this out somehow and extend my
>> tutorial). If someone here knows how to do so, I would be glad for some
>> Input on this ;-)
>>
>> Chris
>>
>> ________________________________________
>> Von: Stephen Connolly [stephen.alan.connolly@gmail.com]
>> Gesendet: Donnerstag, 11. Juli 2013 11:14
>> An: Maven Users List
>> Betreff: Re: Maven and JPA/EclipseLink Configuration...
>>
>> That looks like a Spring only solution.... I wonder is there a pure JavaEE
>> counterpart
>>
>>
>> On 11 July 2013 09:56, christofer.dutz@c-ware.de
>> <ch...@c-ware.de>wrote:
>>
>> > You could have a look at my Wiki article about multiple persistence.xml
>> > files:
>> >
>> https://dev.c-ware.de/confluence/display/PUBLIC/Multiple+persistence.xml+in+a+multi-module+application
>> >
>> > Here you could separate your JPA entities from the platform dependent
>> > Options. In your case you could create your persistence.xml files
>> without
>> > any db and application-server specific Settings and then simply add an
>> > additional persistence.xml to your deployment ... the merging
>> persistence
>> > unit Manager would then merge those properties in automatically without
>> > having to update all of the individual persistence.xml files.
>> >
>> > Don't quite know why my confluence is so slow at the Moment ... will
>> have
>> > a look at this tonight.
>> >
>> > Chris
>> >
>> > ________________________________________
>> > Von: John Patrick [nhoj.patrick@gmail.com]
>> > Gesendet: Dienstag, 9. Juli 2013 18:50
>> > An: Maven Users List
>> > Betreff: Maven and JPA/EclipseLink Configuration...
>> >
>> > I'm working on a project that uses JPA EclipseLink, everything started
>> of
>> > fine with Jetty for developers development and WebLogic and Oracle
>> proper
>> > ear deployments.
>> >
>> > EclipseLink has two values that need to be set in persistence.xml
>> depending
>> > upon your Application Server and Database;
>> > eclipselink.target-server
>> > eclipselink.target-database
>> >
>> > This mean we have two profiles, Jetty and Release.
>> >
>> > Now we support WebSphere and DB2, so have gone to 5 profiles and the
>> need
>> > to rebuild the ear 4 times which each profile.
>> >
>> > Profiles
>> > Jetty
>> > WLSOracle
>> > WLSDB2
>> > WASOracle
>> > WASDB2
>> >
>> > I feel I'm doing something wrong...
>> >
>> > Does someone have any suggestions on what to look at so i could
>> potentially
>> > build it once and get all the 4 ears build in one command? I've thought
>> > about types or classifiers but unsure if that is just another hack...
>> >
>> > Thoughts? As we soon might also need to support MySQL and Glassfish so
>> > their is another 5 profiles and 5 more builds for a release.
>> >
>> > John
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> > For additional commands, e-mail: users-help@maven.apache.org
>> >
>> >
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>>
>

Re: Maven and JPA/EclipseLink Configuration...

Posted by Stephen Connolly <st...@gmail.com>.
It's not an EJB 3.1 thing... checking the 3.2 spec now


On 11 July 2013 10:22, christofer.dutz@c-ware.de
<ch...@c-ware.de>wrote:

> Well it should be possible as the PersistenceUnitManager is more a JPA
> Thing and not restricted to Spring. In my example it is just configured
> using Spring. Think it should be possible to do this an a JavaEE
> application (Perhaps I should find this out somehow and extend my
> tutorial). If someone here knows how to do so, I would be glad for some
> Input on this ;-)
>
> Chris
>
> ________________________________________
> Von: Stephen Connolly [stephen.alan.connolly@gmail.com]
> Gesendet: Donnerstag, 11. Juli 2013 11:14
> An: Maven Users List
> Betreff: Re: Maven and JPA/EclipseLink Configuration...
>
> That looks like a Spring only solution.... I wonder is there a pure JavaEE
> counterpart
>
>
> On 11 July 2013 09:56, christofer.dutz@c-ware.de
> <ch...@c-ware.de>wrote:
>
> > You could have a look at my Wiki article about multiple persistence.xml
> > files:
> >
> https://dev.c-ware.de/confluence/display/PUBLIC/Multiple+persistence.xml+in+a+multi-module+application
> >
> > Here you could separate your JPA entities from the platform dependent
> > Options. In your case you could create your persistence.xml files without
> > any db and application-server specific Settings and then simply add an
> > additional persistence.xml to your deployment ... the merging persistence
> > unit Manager would then merge those properties in automatically without
> > having to update all of the individual persistence.xml files.
> >
> > Don't quite know why my confluence is so slow at the Moment ... will have
> > a look at this tonight.
> >
> > Chris
> >
> > ________________________________________
> > Von: John Patrick [nhoj.patrick@gmail.com]
> > Gesendet: Dienstag, 9. Juli 2013 18:50
> > An: Maven Users List
> > Betreff: Maven and JPA/EclipseLink Configuration...
> >
> > I'm working on a project that uses JPA EclipseLink, everything started of
> > fine with Jetty for developers development and WebLogic and Oracle proper
> > ear deployments.
> >
> > EclipseLink has two values that need to be set in persistence.xml
> depending
> > upon your Application Server and Database;
> > eclipselink.target-server
> > eclipselink.target-database
> >
> > This mean we have two profiles, Jetty and Release.
> >
> > Now we support WebSphere and DB2, so have gone to 5 profiles and the need
> > to rebuild the ear 4 times which each profile.
> >
> > Profiles
> > Jetty
> > WLSOracle
> > WLSDB2
> > WASOracle
> > WASDB2
> >
> > I feel I'm doing something wrong...
> >
> > Does someone have any suggestions on what to look at so i could
> potentially
> > build it once and get all the 4 ears build in one command? I've thought
> > about types or classifiers but unsure if that is just another hack...
> >
> > Thoughts? As we soon might also need to support MySQL and Glassfish so
> > their is another 5 profiles and 5 more builds for a release.
> >
> > John
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > For additional commands, e-mail: users-help@maven.apache.org
> >
> >
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

AW: Maven and JPA/EclipseLink Configuration...

Posted by "christofer.dutz@c-ware.de" <ch...@c-ware.de>.
Well it should be possible as the PersistenceUnitManager is more a JPA Thing and not restricted to Spring. In my example it is just configured using Spring. Think it should be possible to do this an a JavaEE application (Perhaps I should find this out somehow and extend my tutorial). If someone here knows how to do so, I would be glad for some Input on this ;-)

Chris

________________________________________
Von: Stephen Connolly [stephen.alan.connolly@gmail.com]
Gesendet: Donnerstag, 11. Juli 2013 11:14
An: Maven Users List
Betreff: Re: Maven and JPA/EclipseLink Configuration...

That looks like a Spring only solution.... I wonder is there a pure JavaEE
counterpart


On 11 July 2013 09:56, christofer.dutz@c-ware.de
<ch...@c-ware.de>wrote:

> You could have a look at my Wiki article about multiple persistence.xml
> files:
> https://dev.c-ware.de/confluence/display/PUBLIC/Multiple+persistence.xml+in+a+multi-module+application
>
> Here you could separate your JPA entities from the platform dependent
> Options. In your case you could create your persistence.xml files without
> any db and application-server specific Settings and then simply add an
> additional persistence.xml to your deployment ... the merging persistence
> unit Manager would then merge those properties in automatically without
> having to update all of the individual persistence.xml files.
>
> Don't quite know why my confluence is so slow at the Moment ... will have
> a look at this tonight.
>
> Chris
>
> ________________________________________
> Von: John Patrick [nhoj.patrick@gmail.com]
> Gesendet: Dienstag, 9. Juli 2013 18:50
> An: Maven Users List
> Betreff: Maven and JPA/EclipseLink Configuration...
>
> I'm working on a project that uses JPA EclipseLink, everything started of
> fine with Jetty for developers development and WebLogic and Oracle proper
> ear deployments.
>
> EclipseLink has two values that need to be set in persistence.xml depending
> upon your Application Server and Database;
> eclipselink.target-server
> eclipselink.target-database
>
> This mean we have two profiles, Jetty and Release.
>
> Now we support WebSphere and DB2, so have gone to 5 profiles and the need
> to rebuild the ear 4 times which each profile.
>
> Profiles
> Jetty
> WLSOracle
> WLSDB2
> WASOracle
> WASDB2
>
> I feel I'm doing something wrong...
>
> Does someone have any suggestions on what to look at so i could potentially
> build it once and get all the 4 ears build in one command? I've thought
> about types or classifiers but unsure if that is just another hack...
>
> Thoughts? As we soon might also need to support MySQL and Glassfish so
> their is another 5 profiles and 5 more builds for a release.
>
> John
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Maven and JPA/EclipseLink Configuration...

Posted by Stephen Connolly <st...@gmail.com>.
That looks like a Spring only solution.... I wonder is there a pure JavaEE
counterpart


On 11 July 2013 09:56, christofer.dutz@c-ware.de
<ch...@c-ware.de>wrote:

> You could have a look at my Wiki article about multiple persistence.xml
> files:
> https://dev.c-ware.de/confluence/display/PUBLIC/Multiple+persistence.xml+in+a+multi-module+application
>
> Here you could separate your JPA entities from the platform dependent
> Options. In your case you could create your persistence.xml files without
> any db and application-server specific Settings and then simply add an
> additional persistence.xml to your deployment ... the merging persistence
> unit Manager would then merge those properties in automatically without
> having to update all of the individual persistence.xml files.
>
> Don't quite know why my confluence is so slow at the Moment ... will have
> a look at this tonight.
>
> Chris
>
> ________________________________________
> Von: John Patrick [nhoj.patrick@gmail.com]
> Gesendet: Dienstag, 9. Juli 2013 18:50
> An: Maven Users List
> Betreff: Maven and JPA/EclipseLink Configuration...
>
> I'm working on a project that uses JPA EclipseLink, everything started of
> fine with Jetty for developers development and WebLogic and Oracle proper
> ear deployments.
>
> EclipseLink has two values that need to be set in persistence.xml depending
> upon your Application Server and Database;
> eclipselink.target-server
> eclipselink.target-database
>
> This mean we have two profiles, Jetty and Release.
>
> Now we support WebSphere and DB2, so have gone to 5 profiles and the need
> to rebuild the ear 4 times which each profile.
>
> Profiles
> Jetty
> WLSOracle
> WLSDB2
> WASOracle
> WASDB2
>
> I feel I'm doing something wrong...
>
> Does someone have any suggestions on what to look at so i could potentially
> build it once and get all the 4 ears build in one command? I've thought
> about types or classifiers but unsure if that is just another hack...
>
> Thoughts? As we soon might also need to support MySQL and Glassfish so
> their is another 5 profiles and 5 more builds for a release.
>
> John
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

AW: Maven and JPA/EclipseLink Configuration...

Posted by "christofer.dutz@c-ware.de" <ch...@c-ware.de>.
You could have a look at my Wiki article about multiple persistence.xml files: https://dev.c-ware.de/confluence/display/PUBLIC/Multiple+persistence.xml+in+a+multi-module+application

Here you could separate your JPA entities from the platform dependent Options. In your case you could create your persistence.xml files without any db and application-server specific Settings and then simply add an additional persistence.xml to your deployment ... the merging persistence unit Manager would then merge those properties in automatically without having to update all of the individual persistence.xml files.

Don't quite know why my confluence is so slow at the Moment ... will have a look at this tonight.

Chris

________________________________________
Von: John Patrick [nhoj.patrick@gmail.com]
Gesendet: Dienstag, 9. Juli 2013 18:50
An: Maven Users List
Betreff: Maven and JPA/EclipseLink Configuration...

I'm working on a project that uses JPA EclipseLink, everything started of
fine with Jetty for developers development and WebLogic and Oracle proper
ear deployments.

EclipseLink has two values that need to be set in persistence.xml depending
upon your Application Server and Database;
eclipselink.target-server
eclipselink.target-database

This mean we have two profiles, Jetty and Release.

Now we support WebSphere and DB2, so have gone to 5 profiles and the need
to rebuild the ear 4 times which each profile.

Profiles
Jetty
WLSOracle
WLSDB2
WASOracle
WASDB2

I feel I'm doing something wrong...

Does someone have any suggestions on what to look at so i could potentially
build it once and get all the 4 ears build in one command? I've thought
about types or classifiers but unsure if that is just another hack...

Thoughts? As we soon might also need to support MySQL and Glassfish so
their is another 5 profiles and 5 more builds for a release.

John
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org