There's a problem with this for application servers that use pooling
with regards to entity beans. Here is what happens:
we have EntityCMP and EntityData. If you call home.findByPK(id), the
appserver will create an entity object if it doesn't have one in its
pool. then when you call getData on it, the dataHolder in the entity
will be null, and all will be well. However, the next invocation, the
appserver MIGHT decide to reuse the EntityCMP instance, and reinit its
fields. In this case, dataHolder will not be null, and you'll get old
data when you call getData.
Solution:
The check in entity-body.j 'if( dataHolder == null )' should be 'if
(dataHolder==null || !dataHolder.getPK().equals(getPK())'
where getPK is the xdoclet magic to get the entity PK.
Russ Ferriday wrote:
> I'm excited to make progress with xdoclet, but only have time to work on
> it in the background. This has been on the back-burner for a week...
>
> Are there any known issues with the samples? I tried building them on
> both Rh 7.2 and Win2k with no luck.
>
> When I run build.sh/bat in the script directory, I get symbol erors in
> the ejbdoclet target and follow-on problems in compile-ejbs.
>
> It looks like a path problem but I'd rather solicit some wisdom before I
> start poking around.
>
> Chapter and verse below...
>
> TIA,
>
> --r.
>
> ============================================
>
> CWD /home/russ/prj/xdoclet111/samples/script
> Buildfile: build.xml
>
> init:
>
> prepare:
>
> ejbdoclet:
> [ejbdoclet] Generating Javadoc
> [ejbdoclet] Javadoc execution
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/CityBean.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/LanguageCodeBean.java...
>
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/LanguageBean.java...
>
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/CountryBean.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/jdo/Transaction.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBMPBean.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/TellerBean.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/PersonBean.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/StatefulBean.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/QueueBean.java...
> [ejbdoclet] Loading source file
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java...
> [ejbdoclet] Constructing Javadoc information...
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/CityBean.java:95:
> cannot resolve symbol
> [ejbdoclet] symbol : class CityPK
> [ejbdoclet] location: class test.ejb.cmr.CityBean
> [ejbdoclet] public CityPK ejbCreate( String id ) throws
> CreateException {
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/LanguageCodeBean.java:69:
> cannot resolve symbol
> [ejbdoclet] symbol : class LanguageLocal
> [ejbdoclet] location: class test.ejb.cmr.LanguageCodeBean
> [ejbdoclet] public abstract void setLanguage( LanguageLocal language );
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/LanguageCodeBean.java:87:
> cannot resolve symbol
> [ejbdoclet] symbol : class LanguageLocal
> [ejbdoclet] location: class test.ejb.cmr.LanguageCodeBean
> [ejbdoclet] public abstract LanguageLocal getLanguage();
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/LanguageBean.java:91:
> cannot resolve symbol
> [ejbdoclet] symbol : class LanguageCodeLocal
> [ejbdoclet] location: class test.ejb.cmr.LanguageBean
> [ejbdoclet] public abstract void setLanguageCode( LanguageCodeLocal
> languageCode );
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/cmr/LanguageBean.java:101:
> cannot resolve symbol
> [ejbdoclet] symbol : class LanguageCodeLocal
> [ejbdoclet] location: class test.ejb.cmr.LanguageBean
> [ejbdoclet] public abstract LanguageCodeLocal getLanguageCode();
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBMPBean.java:3:
> cannot resolve symbol
> [ejbdoclet] symbol : class Customer
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.Customer;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBMPBean.java:4:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerData
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.CustomerData;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBMPBean.java:5:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerPK
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.CustomerPK;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBMPBean.java:6:
> cannot resolve symbol
> [ejbdoclet] symbol : class AccountHome
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.AccountHome;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java:7:
> cannot resolve symbol
> [ejbdoclet] symbol : class Customer
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.Customer;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java:8:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerData
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.CustomerData;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java:9:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerPK
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.CustomerPK;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java:10:
> cannot resolve symbol
> [ejbdoclet] symbol : class AccountHome
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.AccountHome;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/PersonBean.java:7:
> cannot resolve symbol
> [ejbdoclet] symbol : class Person
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.Person;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/PersonBean.java:8:
> cannot resolve symbol
> [ejbdoclet] symbol : class PersonData
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.PersonData;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/dao/CustomerDAO.java:6:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerPK
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.CustomerPK;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBMPBean.java:40:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerData
> [ejbdoclet] location: class test.ejb.CustomerBMPBean
> [ejbdoclet] public Object ejbCreate(CustomerData detail)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBMPBean.java:45:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerData
> [ejbdoclet] location: class test.ejb.CustomerBMPBean
> [ejbdoclet] public void ejbPostCreate(CustomerData detail){}
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBMPBean.java:67:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerPK
> [ejbdoclet] location: class test.ejb.CustomerBMPBean
> [ejbdoclet] public abstract CustomerPK ejbFindByPrimaryKey()
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java:87:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerData
> [ejbdoclet] location: class test.ejb.CustomerBean
> [ejbdoclet] public void setData(CustomerData data){
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java:107:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerData
> [ejbdoclet] location: class test.ejb.CustomerBean
> [ejbdoclet] public CustomerData getData(){
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java:117:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerData
> [ejbdoclet] location: class test.ejb.CustomerBean
> [ejbdoclet] public java.lang.Object ejbCreate(CustomerData data)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/CustomerBean.java:130:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerData
> [ejbdoclet] location: class test.ejb.CustomerBean
> [ejbdoclet] public void ejbPostCreate(CustomerData data)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/PersonBean.java:154:
> cannot resolve symbol
> [ejbdoclet] symbol : class PersonData
> [ejbdoclet] location: class test.ejb.PersonBean
> [ejbdoclet] public void setData(PersonData data)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/PersonBean.java:164:
> cannot resolve symbol
> [ejbdoclet] symbol : class PersonData
> [ejbdoclet] location: class test.ejb.PersonBean
> [ejbdoclet] public void ejbPostCreate(PersonData data)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/dao/CustomerDAO.java:17:
> cannot resolve symbol
> [ejbdoclet] symbol : class CustomerPK
> [ejbdoclet] location: interface test.dao.CustomerDAO
> [ejbdoclet] public CustomerPK findByPrimaryKey();
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/TellerBean.java:6:
> cannot resolve symbol
> [ejbdoclet] symbol : class Account
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.Account;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/TellerBean.java:7:
> cannot resolve symbol
> [ejbdoclet] symbol : class AccountData
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.AccountData;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/TellerBean.java:8:
> cannot resolve symbol
> [ejbdoclet] symbol : class Customer
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.Customer;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/BaseTellerBean.java:3:
> cannot resolve symbol
> [ejbdoclet] symbol : class Account
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.Account;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/TellerBean.java:48:
> cannot resolve symbol
> [ejbdoclet] symbol : class Account
> [ejbdoclet] location: class test.ejb.TellerBean
> [ejbdoclet] public void transfer(Account from, Account to, float amount)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/TellerBean.java:48:
> cannot resolve symbol
> [ejbdoclet] symbol : class Account
> [ejbdoclet] location: class test.ejb.TellerBean
> [ejbdoclet] public void transfer(Account from, Account to, float amount)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/BaseTellerBean.java:14:
> cannot resolve symbol
> [ejbdoclet] symbol : class Account
> [ejbdoclet] location: class test.ejb.BaseTellerBean
> [ejbdoclet] public void deposit(Account account, float amount)
> [ejbdoclet] ^
> [ejbdoclet] Running <homeInterface/>
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:6:
> cannot resolve symbol
> [ejbdoclet] symbol : class Account
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.Account;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:7:
> cannot resolve symbol
> [ejbdoclet] symbol : class AccountData
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.AccountData;
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:8:
> cannot resolve symbol
> [ejbdoclet] symbol : class Customer
> [ejbdoclet] location: package interfaces
> [ejbdoclet] import test.interfaces.Customer;
> [ejbdoclet] ^
> [ejbdoclet] Running <localHomeInterface/>
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:114:
> cannot resolve symbol
> [ejbdoclet] symbol : class Customer
> [ejbdoclet] location: class test.ejb.AccountBean
> [ejbdoclet] public abstract Customer getOwner();
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:120:
> cannot resolve symbol
> [ejbdoclet] symbol : class Customer
> [ejbdoclet] location: class test.ejb.AccountBean
> [ejbdoclet] public abstract void setOwner(Customer owner);
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:128:
> cannot resolve symbol
> [ejbdoclet] symbol : class AccountData
> [ejbdoclet] location: class test.ejb.AccountBean
> [ejbdoclet] Running <remoteInterface/>
> [ejbdoclet] public abstract void setData(AccountData data);
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:140:
> cannot resolve symbol
> [ejbdoclet] symbol : class AccountData
> [ejbdoclet] location: class test.ejb.AccountBean
> [ejbdoclet] public abstract AccountData getData();
> [ejbdoclet] Running <localInterface/>
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:148:
> cannot resolve symbol
> [ejbdoclet] symbol : class AccountData
> [ejbdoclet] location: class test.ejb.AccountBean
> [ejbdoclet] public Integer ejbCreate(AccountData data)
> [ejbdoclet] ^
> [ejbdoclet] Running <session/>
> [ejbdoclet] Running <entitypk/>
> [ejbdoclet] Running <dataobject/>
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:161:
> cannot resolve symbol
> [ejbdoclet] symbol : class AccountData
> [ejbdoclet] location: class test.ejb.AccountBean
> [ejbdoclet] public void ejbPostCreate(AccountData data)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:171:
> cannot resolve symbol
> [ejbdoclet] symbol : class Account
> [ejbdoclet] Running <entitybmp/>
> [ejbdoclet] location: class test.ejb.AccountBean
> [ejbdoclet] public void ejbHomeTransfer(Account from, Account to,
> float amount)
> [ejbdoclet] ^
> [ejbdoclet]
> /home/russ/prj/xdoclet111/samples/src/java/test/ejb/AccountBean.java:171:
> cannot resolve symbol
> [ejbdoclet] symbol : class Account
> [ejbdoclet] Running <entitycmp/>
> [ejbdoclet] Running <deploymentDescriptor/>
> [ejbdoclet] location: class test.ejb.AccountBean
> [ejbdoclet] public void ejbHomeTransfer(Account from, Account to,
> float amount)
> [ejbdoclet] ^
> [ejbdoclet] Running <jboss/>
> [ejbdoclet] Running <weblogic/>
> [ejbdoclet] Running <apacheSoap/>
> [ejbdoclet] Running <strutsForm/>
> [ejbdoclet] Generating Struts Form classes for 'test.ejb.PersonBean'.
> [ejbdoclet] Running <utilObject/>
> [ejbdoclet] Running <castorMapping/>
> [ejbdoclet] 44 warnings
>
> compile-ejbs:
> [javac] Compiling 100 source files to
> /home/russ/prj/xdoclet111/samples/build/ejb/classes
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/interfaces/CustomerData.java:11:
> test.interfaces.CustomerData is already defined in this compilation unit
> [javac] import test.interfaces.CustomerData;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/interfaces/PersonData.java:11:
> test.interfaces.PersonData is already defined in this compilation unit
> [javac] import test.interfaces.PersonData;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/interfaces/CustomerPK.java:12:
> test.interfaces.CustomerPK is already defined in this compilation unit
> [javac] import test.interfaces.CustomerPK;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/interfaces/Account.java:9:
> test.interfaces.Account is already defined in this compilation unit
> [javac] import test.interfaces.Account;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/interfaces/AccountData.java:10:
> test.interfaces.AccountData is already defined in this compilation unit
> [javac] import test.interfaces.AccountData;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/interfaces/Customer.java:10:
> test.interfaces.Customer is already defined in this compilation unit
> [javac] import test.interfaces.Customer;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/interfaces/Person.java:10:
> test.interfaces.Person is already defined in this compilation unit
> [javac] import test.interfaces.Person;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/ejb/Customer.java:10:
> test.ejb.Customer is already defined in this compilation unit
> [javac] import test.interfaces.Customer;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/ejb/Person.java:10:
> test.ejb.Person is already defined in this compilation unit
> [javac] import test.interfaces.Person;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/ejb/CustomerPK.java:12:
> test.ejb.CustomerPK is already defined in this compilation unit
> [javac] import test.interfaces.CustomerPK;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/ejb/CustomerData.java:11:
> test.ejb.CustomerData is already defined in this compilation unit
> [javac] import test.interfaces.CustomerData;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/ejb/PersonData.java:11:
> test.ejb.PersonData is already defined in this compilation unit
> [javac] import test.interfaces.PersonData;
> [javac] ^
> [javac]
> /home/russ/prj/xdoclet111/samples/gen-src/java/test/ejb/AccountData.java:10:
> test.ejb.AccountData is already defined in this compilation unit
> [javac] import test.interfaces.AccountData;
> [javac] ^
> [javac] 13 errors
>
> BUILD FAILED
>
> /home/russ/prj/xdoclet111/samples/script/build.xml:266: Compile failed,
> messages should have been provided.
>
> Total time: 9 seconds
>
>
> _______________________________________________
> Xdoclet-user mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/xdoclet-user
_______________________________________________
Xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user