--
Carla Mott
Sun Microsystems
carla.mott_at_sun.com
attached mail follows:
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
persistence Digest 11 Nov 2005 16:17:18 -0000 Issue 14
Topics (messages 79 through 83):
Persistence message in promoted build annoucement
79 by: Amy Roh
80 by: Marina Vatkina
Code Review for Validation related change in entity-persistence
81 by: Sanjeeb Kumar Sahoo
82 by: Sanjeeb Kumar Sahoo
Re: EAR scope persistence jar and classpath
83 by: Sanjeeb Kumar Sahoo
Administrivia:
To subscribe to the digest, e-mail:
persistence-digest-subscribe_at_glassfish.dev.java.net
To unsubscribe from the digest, e-mail:
persistence-digest-unsubscribe_at_glassfish.dev.java.net
To post to the list, e-mail:
persistence_at_glassfish.dev.java.net
----------------------------------------------------------------------
MIME-version: 1.0
Content-type: message/rfc822
Date: Wed, 09 Nov 2005 13:59:56 -0800
From: Amy Roh <Amelia.Roh_at_Sun.COM>
Subject: Persistence message in promoted build annoucement
To: persistence_at_glassfish.dev.java.net
Message-id: <4372715C.4070700_at_sun.com>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT
Hi,
I'm planning to add news for persistence in this week's promoted build
announcement. Can someone fill me in the detail which would make a good
announcement?
This promoted build includes improvements to the Java Persistence API
that is included in Java EE 5. Oracle joins with the GlassFish community
and contributes to implement the Java Persistence API 1.0. The Glassfish
app server is implemented using the Toplink technology source code
contributed by Oracle. This latest release includes support for building
POJO entity beans and using the latest annotations ......... (needs some
better detail here about what actually is included today in the download
for Entity Beans).
Thanks!
Amy
MIME-version: 1.0
Content-type: message/rfc822
Date: Wed, 09 Nov 2005 15:05:46 -0800
From: Marina Vatkina <Marina.Vatkina_at_Sun.COM>
Subject: Re: Persistence message in promoted build annoucement
To: persistence_at_glassfish.dev.java.net, Amy Roh <Amelia.Roh_at_Sun.COM>
Message-id: <437280CA.8020009_at_Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
Hi Amy,
This promoted build should have the fix for a P1 issue.
But (!) a) Java Persistence API doesn't have 1.0 version;
b) Oracle has joined the community a while ago; c) there
is no support for building POJO entity beans - this feature
usually is implemented in tools.
On the other hand, we do have new features in this build:
- Added support for EJB 3.0 persistence entities to be deployed as part of
standalone web module.
- Fixed a problem with an EJBQL query selecting a relationship
field, e.g. "SELECT o.customer FROM Order o".
- Added support for aggregates in EJBQL HAVING clause.
There is probably more, but Oracle team seems to have email problems
today.
thanks,
-marina
Amy Roh wrote On 11/09/05 13:59,:
> Hi,
>
> I'm planning to add news for persistence in this week's promoted build
> announcement. Can someone fill me in the detail which would make a good
> announcement?
>
> This promoted build includes improvements to the Java Persistence API
> that is included in Java EE 5. Oracle joins with the GlassFish community
> and contributes to implement the Java Persistence API 1.0. The Glassfish
> app server is implemented using the Toplink technology source code
> contributed by Oracle. This latest release includes support for building
> POJO entity beans and using the latest annotations ......... (needs some
> better detail here about what actually is included today in the download
> for Entity Beans).
>
> Thanks!
> Amy
MIME-version: 1.0
Content-type: message/rfc822
Date: Thu, 10 Nov 2005 20:08:43 +0530
From: Sanjeeb Kumar Sahoo <Sanjeeb.Sahoo_at_Sun.COM>
Subject: Code Review for Validation related change in entity-persistence
To: Peter Krogh <peter.krogh_at_oracle.com>
Cc: "persistence_at_glassfish.dev.java.net" <persistence_at_glassfish.dev.java.net>,
"ejb3-toplink_at_Sun.COM" <ejb3-toplink_at_Sun.COM>,
"ejb3-toplink_ww_at_oracle.com" <ejb3-toplink_ww_at_oracle.com>
Message-id: <43735B73.4050504_at_Sun.COM>
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_QCmgvV8hHhkXPd/MSRyVRw)"
This is a multi-part message in MIME format.
--Boundary_(ID_QCmgvV8hHhkXPd/MSRyVRw)
Content-type: text/plain; charset=ISO-8859-15; format=flowed
Content-transfer-encoding: 7BIT
Hi Peter,
Thanks for your suggestion. Please see my comments in line..
Peter Krogh wrote:
>This is further to our discussion on validation. Again, sceduling time to this task above other tasks doesn't make sense for me at this time. We discussed that it would be better for Sun to verify that the following approach suits your needs.
>
>I have looked into this briefly and I believe that the best approach is to call a method on a TopLink session called initializeDescriptors().
>
>So the code path should be something like this:
>Currently oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl getEntityManager() calls
> serverSession.login()
>
>
>
EntityManagerFactoryImpl.getEntityManager() is not called in the
validation call stack. The validation code just creates an EMF by
calling
EntityManagerFactoryProvider.createContainerEntityManagerFactory(PersistenceUnitInfo).
I have modified EntityManagerFactoryProvider to just call
initializeDescriptors() in validation mode. Please see the attached code.
>a property check needs to be added to call
>
>serverSession.initializeDescriptors() if validation is on
>
>Note
> you must check to make sure that this non logged in EntityManager gets thrown away properly, and no references to it exist anymore.
>
>
>
We don't create any EntityManager as it is not required for validation.
At the end of validation, verifier calls EntityManagerFactory.close().
>When this solution is verified and meets yours needs, we will review it.
>
>
>
Attached here with is the change as well as the original file. Please
let me know your comments.
I have also modified our verifier to use the new property. With these
changes, I did some unit testing using our verifier. I tested both a
positive (positive means the persistence jar was written to spec) and a
negative (persistence jar had some issues) case.
For the negative case, createEMF reported IntegrityException or
ValidationException.
For the positive case, createEMF did not report any exceptions. In the
past createEMF() used to throw a DatabaseException while trying to login
using the default connector.
When verifier called EMF.close(), I saw a message like this:
[TopLink Info]: 2005.11.10 07:37:35.804--ServerSession(25374911)--em1
logout successful
Since it is not actually throwing any exception during logout, do you
think we have to propagate the validationMode to EntityManagerFactoryImpl?
Finally, in y'day's meeting Gordon mentioned about throwing a validation
exception if data-source is null. When that code gets introduced, that
should not throw exception in validationMode.
Look forward to your comments.
Thanks & regards,
Sahoo
>Thanks
>
>
--Boundary_(ID_QCmgvV8hHhkXPd/MSRyVRw)
Content-type: application/zip; name=validation_change.zip
Content-transfer-encoding: BASE64
Content-disposition: inline; filename=validation_change.zip
UEsDBAoAAAAAAJ2gajMAAAAAAAAAAAAAAAASABUAdmFsaWRhdGlvbl9jaGFuZ2Uv
VVQJAAORWnNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAACdajMAAAAAAAAAAAAAAAAX
ABUAdmFsaWRhdGlvbl9jaGFuZ2Uvb3JpZy9VVAkAA7hUc0PUVXNDVXgEAIUrCgBQ
SwMECgAAAAAAc51qMwAAAAAAAAAAAAAAABYAFQB2YWxpZGF0aW9uX2NoYW5nZS9u
ZXcvVVQJAAOSVXNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAHOdajMAAAAAAAAAAAAA
AAApABUAdmFsaWRhdGlvbl9jaGFuZ2UvbmV3L2VudGl0eS1wZXJzaXN0ZW5jZS9V
VAkAA5JVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAc51qMwAAAAAAAAAAAAAAAC0A
FQB2YWxpZGF0aW9uX2NoYW5nZS9uZXcvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9V
VAkAA5JVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAc51qMwAAAAAAAAAAAAAAADIA
FQB2YWxpZGF0aW9uX2NoYW5nZS9uZXcvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9q
YXZhL1VUCQADklVzQ5tac0NVeAQAhSsKAFBLAwQKAAAAAABznWozAAAAAAAAAAAA
AAAAOQAVAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHktcGVyc2lzdGVuY2Uv
c3JjL2phdmEvb3JhY2xlL1VUCQADklVzQ5tac0NVeAQAhSsKAFBLAwQKAAAAAABz
nWozAAAAAAAAAAAAAAAAQQAVAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHkt
cGVyc2lzdGVuY2Uvc3JjL2phdmEvb3JhY2xlL3RvcGxpbmsvVVQJAAOSVXNDm1pz
Q1V4BACFKwoAUEsDBAoAAAAAAHOdajMAAAAAAAAAAAAAAABMABUAdmFsaWRhdGlv
bl9jaGFuZ2UvbmV3L2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvamF2YS9vcmFjbGUv
dG9wbGluay9lc3NlbnRpYWxzL1VUCQADklVzQ5tac0NVeAQAhSsKAFBLAwQKAAAA
AABznWozAAAAAAAAAAAAAAAAUAAVAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRp
dHktcGVyc2lzdGVuY2Uvc3JjL2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFs
cy9lamIvVVQJAAOSVXNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAHudajMAAAAAAAAA
AAAAAABVABUAdmFsaWRhdGlvbl9jaGFuZ2UvbmV3L2VudGl0eS1wZXJzaXN0ZW5j
ZS9zcmMvamF2YS9vcmFjbGUvdG9wbGluay9lc3NlbnRpYWxzL2VqYi9jbXAzL1VU
CQADolVzQ5tac0NVeAQAhSsKAFBLAwQUAAAACAB7nWoz/71bnR4KAABmHwAAdgAV
AHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHktcGVyc2lzdGVuY2Uvc3JjL2ph
dmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9lamIvY21wMy9FbnRpdHlNYW5h
Z2VyRmFjdG9yeVByb3ZpZGVyLmphdmFVVAkAA6JVc0PUVXNDVXgEAIUrCgC1We1z
2kYa/1z+ii334YSHEWk7nWnr800oxgk5Agxg5zKZjGeRFthkpdVJCzbt+H+/59kX
sQJh09ycpimg3ef3vO7zsu5cNMgFma8ZiWSqWKoKIpdErXlBllwwQnNGis3iC4sU
URIWGFEsTwqCZHonIz2ZJDIl12zLhMwSACE0jck1L1TOFxvFYXHII5YWTJMFSNS0
b5qtkJCPckMSuiOpVGQDu/b82WPEMqXJeAoyJpngNI0YeeBqrblbnBC34D/EimhK
5EJRIKFAlO2cqMKKQQ3kStCiWPJi3VlIqUBcmnUEW1HR6V1fD7c/hK9C9aiIzPXu
tVJZ8VunU1KFMduGX+iWhilTnWyzAPg95VolItSEM8Z8UckSAPF3kbGIL3lEBE1X
G7piZCW3LE95utJ0GViaFwXYr9AWFTzhiir9e5PGLK81wIc1S0lcGh+weojKYviM
WRvsGIlNbI2M0mqqt/3udX+KRmY0WlvnA8/9bk9+vfhXTAg+HiwJzcB7EV0IkAJp
aRxr3KUUQj6gpAuIoAdPMiNVe+9tJFtyJuKCMJBMFqDWYkcWOY2+Mgje5qfPTZKz
TNAIVjTZTm6M/+RDSngM4cmXO2TGU3BEou35G5nI3Bi2B+GS89VakU87eD5r0k8p
TRgGUVSuAhrLP8Nip9HpeFRB1CI//PrrL23y46tXP7fJGEQTLCRdIYjeUYB8Bcu3
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
67w3Ut1rPZrtvYnamuuBnF5ls89hzdrr7AqT2+QN39845xlqm7dyqSCyIKdWO5Sj
iaV2vvPyU939O+He96vaLSbHHL8P/NnI2oRXyaryOcGS2kr+BiZvLDc4d8XupnW3
r8sJqAOVpqxO+7tY8ycyros5/h0UZOVClz6DrOsYFBRAAK+vWfRVA8524Ivk4E63
rCZOAH2GDle0BPsm7qDmIDi0VRvm+pEV37IS8GRFsu7DtlamS74qm0K74EtkvHss
ie/uAzIvERzT6SnbZ3DQ3+9BbHN/0Ol5TIxZK13tCeCjLtDtK8PjqfFfUEsDBAoA
AAAAAHadajMAAAAAAAAAAAAAAAAWABUAdmFsaWRhdGlvbl9jaGFuZ2Uvb2xkL1VU
CQADmFVzQ5tac0NVeAQAhSsKAFBLAwQKAAAAAAB2nWozAAAAAAAAAAAAAAAAKQAV
AHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2UvVVQJAAOY
VXNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAHadajMAAAAAAAAAAAAAAAAtABUAdmFs
aWRhdGlvbl9jaGFuZ2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvVVQJAAOY
VXNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAHadajMAAAAAAAAAAAAAAAAyABUAdmFs
aWRhdGlvbl9jaGFuZ2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvamF2YS9V
VAkAA5hVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAdp1qMwAAAAAAAAAAAAAAADkA
FQB2YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9q
YXZhL29yYWNsZS9VVAkAA5hVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAdp1qMwAA
AAAAAAAAAAAAAEEAFQB2YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNp
c3RlbmNlL3NyYy9qYXZhL29yYWNsZS90b3BsaW5rL1VUCQADmFVzQ5tac0NVeAQA
hSsKAFBLAwQKAAAAAAB2nWozAAAAAAAAAAAAAAAATAAVAHZhbGlkYXRpb25fY2hh
bmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2Uvc3JjL2phdmEvb3JhY2xlL3RvcGxp
bmsvZXNzZW50aWFscy9VVAkAA5hVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAdp1q
MwAAAAAAAAAAAAAAAFAAFQB2YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBl
cnNpc3RlbmNlL3NyYy9qYXZhL29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvZWpi
L1VUCQADmFVzQ5tac0NVeAQAhSsKAFBLAwQKAAAAAACKnWozAAAAAAAAAAAAAAAA
VQAVAHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2Uvc3Jj
L2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9lamIvY21wMy9VVAkAA7tV
c0ObWnNDVXgEAIUrCgBQSwMEFAAAAAgAkJ1qM+e5mKKiCQAA2B0AAHYAFQB2YWxp
ZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZhL29y
YWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvZWpiL2NtcDMvRW50aXR5TWFuYWdlckZh
Y3RvcnlQcm92aWRlci5qYXZhVVQJAAPHVXND1FVzQ1V4BACFKwoAtVltcyI3Ev4c
foXCfThwUcMmqau6xOcrOxh78bGGArx7qa0tl5gRIK9mNKcRYJLyf79uvQwCBpvs
1VHZMIzUrX59ultun9XIGZksGIllplmmCyJnRC94QWZcMEIVI8Vy+sRiTbSEBUY0
U2lBkMzsZKQj01Rm5JqtmJB5CkwIzRJyzQut+HSpOSz2ecyyghmyBhLV3Zt6MyLk
N7kkKd2QTGqyhF3b89lzzHJtyHgGMqa54DSLGVlzvTCnOz4RbsF/yCumGZFTTYGE
AlG+8aIKJwa1LOeCFsWMF4v2VEoN4tK8Ldicinbn+rq/+iF6F+lnTaQyuxda58Uv
7XZJFSVsFT3RFY0yptv5cgrst5QLnYrIEI4ZC0UlM2CIv4ucxXzGYyJoNl/SOSNz
uWIq49nc0OVgaV4UYL/CWFTwlGuqze9lljBVaYBPC5aRpDQ+8OogV5bAd8JaYMdY
LBNnZJTWUL3vXl13R2hkRuOFcz6cud0dyG8W/4wJwce9GaE5eC+mUwFSIC1NEsN3
JoWQa5R0ChG0DiSzUrW23kayGWciKQgDyWQBak03ZKpo/JVB8NY/f6kTxXJBY1gx
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
qR1uKakhsgBTd+vxQX9eOc0E+FR14wsosn2+qNxiMebwfSM9rON8l2xXPi9YWlnJ
b2HOxHKDU0bi7/Y227qcgjpQacrqtL39s3+U4aaY41/eQFYuTOmznE0dg4ICHMDr
CxZ/NQzHG/BFuneLWFYTL4DJof0VI8GwJNyrOch8RcWS+X5kzlesZHi0Ijn3YRMn
sxmfO/7llBpKZL17KEno7j2yAAgO6cxMGR6w181umbhWluwmaXCINatBV6/AEcYH
45zfV4bHS+2/UEsBAhcDCgAAAAAAnaBqMwAAAAAAAAAAAAAAABIADQAAAAAAAAAQ
AO1BAAAAAHZhbGlkYXRpb25fY2hhbmdlL1VUBQADkVpzQ1V4AABQSwECFwMKAAAA
AAAAnWozAAAAAAAAAAAAAAAAFwANAAAAAAAAABAA7UFFAAAAdmFsaWRhdGlvbl9j
aGFuZ2Uvb3JpZy9VVAUAA7hUc0NVeAAAUEsBAhcDCgAAAAAAc51qMwAAAAAAAAAA
AAAAABYADQAAAAAAAAAQAO1BjwAAAHZhbGlkYXRpb25fY2hhbmdlL25ldy9VVAUA
A5JVc0NVeAAAUEsBAhcDCgAAAAAAc51qMwAAAAAAAAAAAAAAACkADQAAAAAAAAAQ
AO1B2AAAAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHktcGVyc2lzdGVuY2Uv
VVQFAAOSVXNDVXgAAFBLAQIXAwoAAAAAAHOdajMAAAAAAAAAAAAAAAAtAA0AAAAA
AAAAEADtQTQBAAB2YWxpZGF0aW9uX2NoYW5nZS9uZXcvZW50aXR5LXBlcnNpc3Rl
bmNlL3NyYy9VVAUAA5JVc0NVeAAAUEsBAhcDCgAAAAAAc51qMwAAAAAAAAAAAAAA
ADIADQAAAAAAAAAQAO1BlAEAAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHkt
cGVyc2lzdGVuY2Uvc3JjL2phdmEvVVQFAAOSVXNDVXgAAFBLAQIXAwoAAAAAAHOd
ajMAAAAAAAAAAAAAAAA5AA0AAAAAAAAAEADtQfkBAAB2YWxpZGF0aW9uX2NoYW5n
ZS9uZXcvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZhL29yYWNsZS9VVAUAA5JV
c0NVeAAAUEsBAhcDCgAAAAAAc51qMwAAAAAAAAAAAAAAAEEADQAAAAAAAAAQAO1B
ZQIAAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHktcGVyc2lzdGVuY2Uvc3Jj
L2phdmEvb3JhY2xlL3RvcGxpbmsvVVQFAAOSVXNDVXgAAFBLAQIXAwoAAAAAAHOd
ajMAAAAAAAAAAAAAAABMAA0AAAAAAAAAEADtQdkCAAB2YWxpZGF0aW9uX2NoYW5n
ZS9uZXcvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZhL29yYWNsZS90b3BsaW5r
L2Vzc2VudGlhbHMvVVQFAAOSVXNDVXgAAFBLAQIXAwoAAAAAAHOdajMAAAAAAAAA
AAAAAABQAA0AAAAAAAAAEADtQVgDAAB2YWxpZGF0aW9uX2NoYW5nZS9uZXcvZW50
aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZhL29yYWNsZS90b3BsaW5rL2Vzc2VudGlh
bHMvZWpiL1VUBQADklVzQ1V4AABQSwECFwMKAAAAAAB7nWozAAAAAAAAAAAAAAAA
VQANAAAAAAAAABAA7UHbAwAAdmFsaWRhdGlvbl9jaGFuZ2UvbmV3L2VudGl0eS1w
ZXJzaXN0ZW5jZS9zcmMvamF2YS9vcmFjbGUvdG9wbGluay9lc3NlbnRpYWxzL2Vq
Yi9jbXAzL1VUBQADolVzQ1V4AABQSwECFwMUAAAACAB7nWoz/71bnR4KAABmHwAA
dgANAAAAAAABAAAApIFjBAAAdmFsaWRhdGlvbl9jaGFuZ2UvbmV3L2VudGl0eS1w
ZXJzaXN0ZW5jZS9zcmMvamF2YS9vcmFjbGUvdG9wbGluay9lc3NlbnRpYWxzL2Vq
Yi9jbXAzL0VudGl0eU1hbmFnZXJGYWN0b3J5UHJvdmlkZXIuamF2YVVUBQADolVz
Q1V4AABQSwECFwMKAAAAAAB2nWozAAAAAAAAAAAAAAAAFgANAAAAAAAAABAA7UEq
DwAAdmFsaWRhdGlvbl9jaGFuZ2Uvb2xkL1VUBQADmFVzQ1V4AABQSwECFwMKAAAA
AAB2nWozAAAAAAAAAAAAAAAAKQANAAAAAAAAABAA7UFzDwAAdmFsaWRhdGlvbl9j
aGFuZ2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9VVAUAA5hVc0NVeAAAUEsBAhcD
CgAAAAAAdp1qMwAAAAAAAAAAAAAAAC0ADQAAAAAAAAAQAO1Bzw8AAHZhbGlkYXRp
b25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2Uvc3JjL1VUBQADmFVzQ1V4
AABQSwECFwMKAAAAAAB2nWozAAAAAAAAAAAAAAAAMgANAAAAAAAAABAA7UEvEAAA
dmFsaWRhdGlvbl9jaGFuZ2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvamF2
YS9VVAUAA5hVc0NVeAAAUEsBAhcDCgAAAAAAdp1qMwAAAAAAAAAAAAAAADkADQAA
AAAAAAAQAO1BlBAAAHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lz
dGVuY2Uvc3JjL2phdmEvb3JhY2xlL1VUBQADmFVzQ1V4AABQSwECFwMKAAAAAAB2
nWozAAAAAAAAAAAAAAAAQQANAAAAAAAAABAA7UEAEQAAdmFsaWRhdGlvbl9jaGFu
Z2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvamF2YS9vcmFjbGUvdG9wbGlu
ay9VVAUAA5hVc0NVeAAAUEsBAhcDCgAAAAAAdp1qMwAAAAAAAAAAAAAAAEwADQAA
AAAAAAAQAO1BdBEAAHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lz
dGVuY2Uvc3JjL2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9VVAUAA5hV
c0NVeAAAUEsBAhcDCgAAAAAAdp1qMwAAAAAAAAAAAAAAAFAADQAAAAAAAAAQAO1B
8xEAAHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2Uvc3Jj
L2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9lamIvVVQFAAOYVXNDVXgA
AFBLAQIXAwoAAAAAAIqdajMAAAAAAAAAAAAAAABVAA0AAAAAAAAAEADtQXYSAAB2
YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZh
L29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvZWpiL2NtcDMvVVQFAAO7VXNDVXgA
AFBLAQIXAxQAAAAIAJCdajPnuZiiogkAANgdAAB2AA0AAAAAAAEAAACkgf4SAAB2
YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZh
L29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvZWpiL2NtcDMvRW50aXR5TWFuYWdl
ckZhY3RvcnlQcm92aWRlci5qYXZhVVQFAAPHVXNDVXgAAFBLBQYAAAAAFgAWADkK
AABJHQAAAAA=
--Boundary_(ID_QCmgvV8hHhkXPd/MSRyVRw)--
MIME-version: 1.0
Content-type: message/rfc822
Date: Thu, 10 Nov 2005 20:12:29 +0530
From: Sanjeeb Kumar Sahoo <Sanjeeb.Sahoo_at_Sun.COM>
Subject: Code Review for Validation related change in entity-persistence
To: Peter Krogh <peter.krogh_at_oracle.com>
Cc: "persistence_at_glassfish.dev.java.net" <persistence_at_glassfish.dev.java.net>,
"ejb3-toplink_at_Sun.COM" <ejb3-toplink_at_Sun.COM>,
"ejb3-toplink_ww_at_oracle.com" <ejb3-toplink_ww_at_oracle.com>
Message-id: <43735C55.40703_at_Sun.COM>
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_UgDypkp99Zcl8F0HQjsqXA)"
This is a multi-part message in MIME format.
--Boundary_(ID_UgDypkp99Zcl8F0HQjsqXA)
Content-type: text/plain; charset=ISO-8859-15; format=flowed
Content-transfer-encoding: 7BIT
(Resending as earlier one bounced back b'cos Oracle mail server did not
accept zip attachment. Please rename the attachment to .zip before opening.)
Hi Peter,
Thanks for your suggestion. Please see my comments in line..
Peter Krogh wrote:
>This is further to our discussion on validation. Again, sceduling time to this task above other tasks doesn't make sense for me at this time. We discussed that it would be better for Sun to verify that the following approach suits your needs.
>
>I have looked into this briefly and I believe that the best approach is to call a method on a TopLink session called initializeDescriptors().
>
>So the code path should be something like this:
>Currently oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl getEntityManager() calls
> serverSession.login()
>
>
>
EntityManagerFactoryImpl.getEntityManager() is not called in the
validation call stack. The validation code just creates an EMF by
calling
EntityManagerFactoryProvider.createContainerEntityManagerFactory(PersistenceUnitInfo).
I have modified EntityManagerFactoryProvider to just call
initializeDescriptors() in validation mode. Please see the attached code.
>a property check needs to be added to call
>
>serverSession.initializeDescriptors() if validation is on
>
>Note
> you must check to make sure that this non logged in EntityManager gets thrown away properly, and no references to it exist anymore.
>
>
>
We don't create any EntityManager as it is not required for validation.
At the end of validation, verifier calls EntityManagerFactory.close().
>When this solution is verified and meets yours needs, we will review it.
>
>
>
Attached here with is the change as well as the original file. Please
let me know your comments.
I have also modified our verifier to use the new property. With these
changes, I did some unit testing using our verifier. I tested both a
positive (positive means the persistence jar was written to spec) and a
negative (persistence jar had some issues) case.
For the negative case, createEMF reported IntegrityException or
ValidationException.
For the positive case, createEMF did not report any exceptions. In the
past createEMF() used to throw a DatabaseException while trying to login
using the default connector.
When verifier called EMF.close(), I saw a message like this:
[TopLink Info]: 2005.11.10 07:37:35.804--ServerSession(25374911)--em1
logout successful
Since it is not actually throwing any exception during logout, do you
think we have to propagate the validationMode to EntityManagerFactoryImpl?
Finally, in y'day's meeting Gordon mentioned about throwing a validation
exception if data-source is null. When that code gets introduced, that
should not throw exception in validationMode.
Look forward to your comments.
Thanks & regards,
Sahoo
>Thanks
>
>
--Boundary_(ID_UgDypkp99Zcl8F0HQjsqXA)
Content-type: application/octet-stream; name=validation_change.zipfile
Content-transfer-encoding: BASE64
Content-disposition: attachment; filename=validation_change.zipfile
UEsDBAoAAAAAAJ2gajMAAAAAAAAAAAAAAAASABUAdmFsaWRhdGlvbl9jaGFuZ2Uv
VVQJAAORWnNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAACdajMAAAAAAAAAAAAAAAAX
ABUAdmFsaWRhdGlvbl9jaGFuZ2Uvb3JpZy9VVAkAA7hUc0PUVXNDVXgEAIUrCgBQ
SwMECgAAAAAAc51qMwAAAAAAAAAAAAAAABYAFQB2YWxpZGF0aW9uX2NoYW5nZS9u
ZXcvVVQJAAOSVXNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAHOdajMAAAAAAAAAAAAA
AAApABUAdmFsaWRhdGlvbl9jaGFuZ2UvbmV3L2VudGl0eS1wZXJzaXN0ZW5jZS9V
VAkAA5JVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAc51qMwAAAAAAAAAAAAAAAC0A
FQB2YWxpZGF0aW9uX2NoYW5nZS9uZXcvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9V
VAkAA5JVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAc51qMwAAAAAAAAAAAAAAADIA
FQB2YWxpZGF0aW9uX2NoYW5nZS9uZXcvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9q
YXZhL1VUCQADklVzQ5tac0NVeAQAhSsKAFBLAwQKAAAAAABznWozAAAAAAAAAAAA
AAAAOQAVAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHktcGVyc2lzdGVuY2Uv
c3JjL2phdmEvb3JhY2xlL1VUCQADklVzQ5tac0NVeAQAhSsKAFBLAwQKAAAAAABz
nWozAAAAAAAAAAAAAAAAQQAVAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHkt
cGVyc2lzdGVuY2Uvc3JjL2phdmEvb3JhY2xlL3RvcGxpbmsvVVQJAAOSVXNDm1pz
Q1V4BACFKwoAUEsDBAoAAAAAAHOdajMAAAAAAAAAAAAAAABMABUAdmFsaWRhdGlv
bl9jaGFuZ2UvbmV3L2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvamF2YS9vcmFjbGUv
dG9wbGluay9lc3NlbnRpYWxzL1VUCQADklVzQ5tac0NVeAQAhSsKAFBLAwQKAAAA
AABznWozAAAAAAAAAAAAAAAAUAAVAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRp
dHktcGVyc2lzdGVuY2Uvc3JjL2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFs
cy9lamIvVVQJAAOSVXNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAHudajMAAAAAAAAA
AAAAAABVABUAdmFsaWRhdGlvbl9jaGFuZ2UvbmV3L2VudGl0eS1wZXJzaXN0ZW5j
ZS9zcmMvamF2YS9vcmFjbGUvdG9wbGluay9lc3NlbnRpYWxzL2VqYi9jbXAzL1VU
CQADolVzQ5tac0NVeAQAhSsKAFBLAwQUAAAACAB7nWoz/71bnR4KAABmHwAAdgAV
AHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHktcGVyc2lzdGVuY2Uvc3JjL2ph
dmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9lamIvY21wMy9FbnRpdHlNYW5h
Z2VyRmFjdG9yeVByb3ZpZGVyLmphdmFVVAkAA6JVc0PUVXNDVXgEAIUrCgC1We1z
2kYa/1z+ii334YSHEWk7nWnr800oxgk5Agxg5zKZjGeRFthkpdVJCzbt+H+/59kX
sQJh09ycpimg3ef3vO7zsu5cNMgFma8ZiWSqWKoKIpdErXlBllwwQnNGis3iC4sU
URIWGFEsTwqCZHonIz2ZJDIl12zLhMwSACE0jck1L1TOFxvFYXHII5YWTJMFSNS0
b5qtkJCPckMSuiOpVGQDu/b82WPEMqXJeAoyJpngNI0YeeBqrblbnBC34D/EimhK
5EJRIKFAlO2cqMKKQQ3kStCiWPJi3VlIqUBcmnUEW1HR6V1fD7c/hK9C9aiIzPXu
tVJZ8VunU1KFMduGX+iWhilTnWyzAPg95VolItSEM8Z8UckSAPF3kbGIL3lEBE1X
G7piZCW3LE95utJ0GViaFwXYr9AWFTzhiir9e5PGLK81wIc1S0lcGh+weojKYviM
WRvsGIlNbI2M0mqqt/3udX+KRmY0WlvnA8/9bk9+vfhXTAg+HiwJzcB7EV0IkAJp
aRxr3KUUQj6gpAuIoAdPMiNVe+9tJFtyJuKCMJBMFqDWYkcWOY2+Mgje5qfPTZKz
TNAIVjTZTm6M/+RDSngM4cmXO2TGU3BEou35G5nI3Bi2B+GS89VakU87eD5r0k8p
TRgGUVSuAhrLP8Nip9HpeFRB1CI//PrrL23y46tXP7fJGEQTLCRdIYjeUYB8Bcu3
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
67w3Ut1rPZrtvYnamuuBnF5ls89hzdrr7AqT2+QN39845xlqm7dyqSCyIKdWO5Sj
iaV2vvPyU939O+He96vaLSbHHL8P/NnI2oRXyaryOcGS2kr+BiZvLDc4d8XupnW3
r8sJqAOVpqxO+7tY8ycyros5/h0UZOVClz6DrOsYFBRAAK+vWfRVA8524Ivk4E63
rCZOAH2GDle0BPsm7qDmIDi0VRvm+pEV37IS8GRFsu7DtlamS74qm0K74EtkvHss
ie/uAzIvERzT6SnbZ3DQ3+9BbHN/0Ol5TIxZK13tCeCjLtDtK8PjqfFfUEsDBAoA
AAAAAHadajMAAAAAAAAAAAAAAAAWABUAdmFsaWRhdGlvbl9jaGFuZ2Uvb2xkL1VU
CQADmFVzQ5tac0NVeAQAhSsKAFBLAwQKAAAAAAB2nWozAAAAAAAAAAAAAAAAKQAV
AHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2UvVVQJAAOY
VXNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAHadajMAAAAAAAAAAAAAAAAtABUAdmFs
aWRhdGlvbl9jaGFuZ2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvVVQJAAOY
VXNDm1pzQ1V4BACFKwoAUEsDBAoAAAAAAHadajMAAAAAAAAAAAAAAAAyABUAdmFs
aWRhdGlvbl9jaGFuZ2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvamF2YS9V
VAkAA5hVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAdp1qMwAAAAAAAAAAAAAAADkA
FQB2YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9q
YXZhL29yYWNsZS9VVAkAA5hVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAdp1qMwAA
AAAAAAAAAAAAAEEAFQB2YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNp
c3RlbmNlL3NyYy9qYXZhL29yYWNsZS90b3BsaW5rL1VUCQADmFVzQ5tac0NVeAQA
hSsKAFBLAwQKAAAAAAB2nWozAAAAAAAAAAAAAAAATAAVAHZhbGlkYXRpb25fY2hh
bmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2Uvc3JjL2phdmEvb3JhY2xlL3RvcGxp
bmsvZXNzZW50aWFscy9VVAkAA5hVc0ObWnNDVXgEAIUrCgBQSwMECgAAAAAAdp1q
MwAAAAAAAAAAAAAAAFAAFQB2YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBl
cnNpc3RlbmNlL3NyYy9qYXZhL29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvZWpi
L1VUCQADmFVzQ5tac0NVeAQAhSsKAFBLAwQKAAAAAACKnWozAAAAAAAAAAAAAAAA
VQAVAHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2Uvc3Jj
L2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9lamIvY21wMy9VVAkAA7tV
c0ObWnNDVXgEAIUrCgBQSwMEFAAAAAgAkJ1qM+e5mKKiCQAA2B0AAHYAFQB2YWxp
ZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZhL29y
YWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvZWpiL2NtcDMvRW50aXR5TWFuYWdlckZh
Y3RvcnlQcm92aWRlci5qYXZhVVQJAAPHVXND1FVzQ1V4BACFKwoAtVltcyI3Ev4c
foXCfThwUcMmqau6xOcrOxh78bGGArx7qa0tl5gRIK9mNKcRYJLyf79uvQwCBpvs
1VHZMIzUrX59ultun9XIGZksGIllplmmCyJnRC94QWZcMEIVI8Vy+sRiTbSEBUY0
U2lBkMzsZKQj01Rm5JqtmJB5CkwIzRJyzQut+HSpOSz2ecyyghmyBhLV3Zt6MyLk
N7kkKd2QTGqyhF3b89lzzHJtyHgGMqa54DSLGVlzvTCnOz4RbsF/yCumGZFTTYGE
AlG+8aIKJwa1LOeCFsWMF4v2VEoN4tK8Ldicinbn+rq/+iF6F+lnTaQyuxda58Uv
7XZJFSVsFT3RFY0yptv5cgrst5QLnYrIEI4ZC0UlM2CIv4ucxXzGYyJoNl/SOSNz
uWIq49nc0OVgaV4UYL/CWFTwlGuqze9lljBVaYBPC5aRpDQ+8OogV5bAd8JaYMdY
LBNnZJTWUL3vXl13R2hkRuOFcz6cud0dyG8W/4wJwce9GaE5eC+mUwFSIC1NEsN3
JoWQa5R0ChG0DiSzUrW23kayGWciKQgDyWQBak03ZKpo/JVB8NY/f6kTxXJBY1gx
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
qR1uKakhsgBTd+vxQX9eOc0E+FR14wsosn2+qNxiMebwfSM9rON8l2xXPi9YWlnJ
b2HOxHKDU0bi7/Y227qcgjpQacrqtL39s3+U4aaY41/eQFYuTOmznE0dg4ICHMDr
CxZ/NQzHG/BFuneLWFYTL4DJof0VI8GwJNyrOch8RcWS+X5kzlesZHi0Ijn3YRMn
sxmfO/7llBpKZL17KEno7j2yAAgO6cxMGR6w181umbhWluwmaXCINatBV6/AEcYH
45zfV4bHS+2/UEsBAhcDCgAAAAAAnaBqMwAAAAAAAAAAAAAAABIADQAAAAAAAAAQ
AO1BAAAAAHZhbGlkYXRpb25fY2hhbmdlL1VUBQADkVpzQ1V4AABQSwECFwMKAAAA
AAAAnWozAAAAAAAAAAAAAAAAFwANAAAAAAAAABAA7UFFAAAAdmFsaWRhdGlvbl9j
aGFuZ2Uvb3JpZy9VVAUAA7hUc0NVeAAAUEsBAhcDCgAAAAAAc51qMwAAAAAAAAAA
AAAAABYADQAAAAAAAAAQAO1BjwAAAHZhbGlkYXRpb25fY2hhbmdlL25ldy9VVAUA
A5JVc0NVeAAAUEsBAhcDCgAAAAAAc51qMwAAAAAAAAAAAAAAACkADQAAAAAAAAAQ
AO1B2AAAAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHktcGVyc2lzdGVuY2Uv
VVQFAAOSVXNDVXgAAFBLAQIXAwoAAAAAAHOdajMAAAAAAAAAAAAAAAAtAA0AAAAA
AAAAEADtQTQBAAB2YWxpZGF0aW9uX2NoYW5nZS9uZXcvZW50aXR5LXBlcnNpc3Rl
bmNlL3NyYy9VVAUAA5JVc0NVeAAAUEsBAhcDCgAAAAAAc51qMwAAAAAAAAAAAAAA
ADIADQAAAAAAAAAQAO1BlAEAAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHkt
cGVyc2lzdGVuY2Uvc3JjL2phdmEvVVQFAAOSVXNDVXgAAFBLAQIXAwoAAAAAAHOd
ajMAAAAAAAAAAAAAAAA5AA0AAAAAAAAAEADtQfkBAAB2YWxpZGF0aW9uX2NoYW5n
ZS9uZXcvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZhL29yYWNsZS9VVAUAA5JV
c0NVeAAAUEsBAhcDCgAAAAAAc51qMwAAAAAAAAAAAAAAAEEADQAAAAAAAAAQAO1B
ZQIAAHZhbGlkYXRpb25fY2hhbmdlL25ldy9lbnRpdHktcGVyc2lzdGVuY2Uvc3Jj
L2phdmEvb3JhY2xlL3RvcGxpbmsvVVQFAAOSVXNDVXgAAFBLAQIXAwoAAAAAAHOd
ajMAAAAAAAAAAAAAAABMAA0AAAAAAAAAEADtQdkCAAB2YWxpZGF0aW9uX2NoYW5n
ZS9uZXcvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZhL29yYWNsZS90b3BsaW5r
L2Vzc2VudGlhbHMvVVQFAAOSVXNDVXgAAFBLAQIXAwoAAAAAAHOdajMAAAAAAAAA
AAAAAABQAA0AAAAAAAAAEADtQVgDAAB2YWxpZGF0aW9uX2NoYW5nZS9uZXcvZW50
aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZhL29yYWNsZS90b3BsaW5rL2Vzc2VudGlh
bHMvZWpiL1VUBQADklVzQ1V4AABQSwECFwMKAAAAAAB7nWozAAAAAAAAAAAAAAAA
VQANAAAAAAAAABAA7UHbAwAAdmFsaWRhdGlvbl9jaGFuZ2UvbmV3L2VudGl0eS1w
ZXJzaXN0ZW5jZS9zcmMvamF2YS9vcmFjbGUvdG9wbGluay9lc3NlbnRpYWxzL2Vq
Yi9jbXAzL1VUBQADolVzQ1V4AABQSwECFwMUAAAACAB7nWoz/71bnR4KAABmHwAA
dgANAAAAAAABAAAApIFjBAAAdmFsaWRhdGlvbl9jaGFuZ2UvbmV3L2VudGl0eS1w
ZXJzaXN0ZW5jZS9zcmMvamF2YS9vcmFjbGUvdG9wbGluay9lc3NlbnRpYWxzL2Vq
Yi9jbXAzL0VudGl0eU1hbmFnZXJGYWN0b3J5UHJvdmlkZXIuamF2YVVUBQADolVz
Q1V4AABQSwECFwMKAAAAAAB2nWozAAAAAAAAAAAAAAAAFgANAAAAAAAAABAA7UEq
DwAAdmFsaWRhdGlvbl9jaGFuZ2Uvb2xkL1VUBQADmFVzQ1V4AABQSwECFwMKAAAA
AAB2nWozAAAAAAAAAAAAAAAAKQANAAAAAAAAABAA7UFzDwAAdmFsaWRhdGlvbl9j
aGFuZ2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9VVAUAA5hVc0NVeAAAUEsBAhcD
CgAAAAAAdp1qMwAAAAAAAAAAAAAAAC0ADQAAAAAAAAAQAO1Bzw8AAHZhbGlkYXRp
b25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2Uvc3JjL1VUBQADmFVzQ1V4
AABQSwECFwMKAAAAAAB2nWozAAAAAAAAAAAAAAAAMgANAAAAAAAAABAA7UEvEAAA
dmFsaWRhdGlvbl9jaGFuZ2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvamF2
YS9VVAUAA5hVc0NVeAAAUEsBAhcDCgAAAAAAdp1qMwAAAAAAAAAAAAAAADkADQAA
AAAAAAAQAO1BlBAAAHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lz
dGVuY2Uvc3JjL2phdmEvb3JhY2xlL1VUBQADmFVzQ1V4AABQSwECFwMKAAAAAAB2
nWozAAAAAAAAAAAAAAAAQQANAAAAAAAAABAA7UEAEQAAdmFsaWRhdGlvbl9jaGFu
Z2Uvb2xkL2VudGl0eS1wZXJzaXN0ZW5jZS9zcmMvamF2YS9vcmFjbGUvdG9wbGlu
ay9VVAUAA5hVc0NVeAAAUEsBAhcDCgAAAAAAdp1qMwAAAAAAAAAAAAAAAEwADQAA
AAAAAAAQAO1BdBEAAHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lz
dGVuY2Uvc3JjL2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9VVAUAA5hV
c0NVeAAAUEsBAhcDCgAAAAAAdp1qMwAAAAAAAAAAAAAAAFAADQAAAAAAAAAQAO1B
8xEAAHZhbGlkYXRpb25fY2hhbmdlL29sZC9lbnRpdHktcGVyc2lzdGVuY2Uvc3Jj
L2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9lamIvVVQFAAOYVXNDVXgA
AFBLAQIXAwoAAAAAAIqdajMAAAAAAAAAAAAAAABVAA0AAAAAAAAAEADtQXYSAAB2
YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZh
L29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvZWpiL2NtcDMvVVQFAAO7VXNDVXgA
AFBLAQIXAxQAAAAIAJCdajPnuZiiogkAANgdAAB2AA0AAAAAAAEAAACkgf4SAAB2
YWxpZGF0aW9uX2NoYW5nZS9vbGQvZW50aXR5LXBlcnNpc3RlbmNlL3NyYy9qYXZh
L29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvZWpiL2NtcDMvRW50aXR5TWFuYWdl
ckZhY3RvcnlQcm92aWRlci5qYXZhVVQFAAPHVXNDVXgAAFBLBQYAAAAAFgAWADkK
AABJHQAAAAA=
--Boundary_(ID_UgDypkp99Zcl8F0HQjsqXA)--
MIME-version: 1.0
Content-type: message/rfc822
Date: Fri, 11 Nov 2005 20:14:48 +0530
From: Sanjeeb Kumar Sahoo <Sanjeeb.Sahoo_at_Sun.COM>
Subject: Re: EAR scope persistence jar and classpath
To: Mike Keith <michael.keith_at_oracle.com>
Cc: "persistence_at_glassfish.dev.java.net" <persistence_at_glassfish.dev.java.net>,
Qingqing Ouyang <Qingqing.Ouyang_at_Sun.COM>
Message-id: <4374AE60.7010307_at_Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=windows-1252; format=flowed
Content-transfer-encoding: 8BIT
Hi Mike,
After going through bugs like
https://glassfish.dev.java.net/issues/show_bug.cgi?id=77 I am taking a
slightly difference stance. From an ease of use point of view, we should
restrict EAR scoped persistence jars to lib directory only. I shall give
another example of making this mistake even more easily:
app.ear // no application.xml
ejb.jar // contains classes with @Stateless, has an injected PU
called "em1"
par.jar // contains persistence.xml which defines a PU named
"em1", but this jar by mistake also contains a class with @Stateless
Because of module discovery rules, par.jar is considered to be an
ejb-jar and hence it's PU is local to that ejb-jar -- contrary to what
user wanted. Hence the app would fail to deploy.
More over, to be consistent with the *non-component* status given to
persistence jars, we should limit them to lib directory only. (I know
in my other email I asked the question as to why EAR scoped persistence
jar files can not be placed in any arbitrary directory structure, but
then after going thru' your response I think I was wrong in comparing
persistence jars with components).
This definitely reduces complexities for users as well as for container
implementors (I am not biased by the later one because we have already
implemented it).
Thanks & regards,
Sahoo
Mike Keith wrote:
>Sahoo,
>
>The intent of this paragraph was to indicate that the classes
>in the persistence unit should be configured to be on the application
>classpath by the user, not by the Container. However, the more that
>persistence units appear to be like other type of Java EE modules
>(for example, if Bill Shannnon agreed to satisfy the previous question
>that you asked about allowing them to be in different directories from
>the root) then I feel that it might make more sense for the Container to
>place these jars on the application classpath (logically adding them to
>the lib dir).
>
>-Mike
>
>
>
>>-----Original Message-----
>>From: Sanjeeb Kumar Sahoo [mailto:Sanjeeb.Sahoo_at_Sun.COM]
>>Sent: Tuesday, November 08, 2005 7:15 AM
>>To: Mike Keith
>>Cc: persistence_at_glassfish.dev.java.net
>>Subject: EAR scope persistence jar and classpath
>>
>>
>>Hi Mike,
>>Referring to the latest packaging proposal (10/19), I see the
>>following
>>is mentioned in section #6.2.
>>"All persistence classes defined at the level of the Java EE
>>EAR must be
>>accessible to all other Java EE
>>components in the application— i.e. loaded by the application
>>classloader— such that if the same entity
>>class is referenced by two different Java EE components (which may be
>>using different persistence
>>units), the referenced class is the same identical class."
>>
>>Is container responsible for making the EAR scoped persistence jars
>>available to all other components in the EAR even if user has not
>>explicitly specified a dependency on those jar files using Class-Path
>>manifest in individual component's manifest file? This
>>indirectly means
>>they are treated as library jar files even though they are
>>not placed in
>>library directory of EAR file.
>>
>>Thanks,
>>Sahoo
>>
>>
>>