[JBoss Seam] - Re: DataModel, Factory and Stale Data
by tony.herstellï¼ gmail.com
If I understand you well enough then....
if you are going to use a SSB then you pretty much have to manage the data it contains if you are going to update the contents of that data in another conversation...
I have added addOrganisationToExistingList and other "call back" methods that are called by "external" conversations that fix up the data in my SSB (see below - addOrganisationToExistingList)
Caching is helping you not hit the database.. but you got to manage cleaning up the "various" caches if you do stuff invisible to it... if that makes sense.
|
| /**
| * @author Tony Herstell
| * @version $Revision: 1.4 $ $Date: 2007-02-08 00:05:32 $
| */
| public interface FindOrganisationController {
|
| public void initOrganisations();
|
| public String startFind();
|
| public String applyFilter();
|
| public void destroy();
|
| // GUI Support Methods
| public void selectedSearchCriteriaPanelChanged(ValueChangeEvent event);
|
| public void setSelectedSearchCriteriaPanel(String selectedPanel);
|
| public String getSelectedSearchCriteriaPanel();
|
| public String getALL_OPTION();
|
| public String getFILTERED_OPTION();
|
| public boolean getAscending();
|
| public void setAscending(boolean ascending);
|
| public String getSortColumn();
|
| public void setSortColumn(String sortColumn);
|
| public void physicalDontCareValueChanged(ValueChangeEvent event);
|
| public String getPhysicalValueRequiredPanel();
|
| public String getPHYSICAL_VALUE_REQUIRED();
|
| public String getPHYSICAL_VALUE_NOT_REQUIRED();
|
| public boolean getPhysicalDontCare();
|
| public void setPhysicalDontCare(boolean physicalDontCare);
|
|
| /*
| * Used by external rountines to update the session organisations list object.
| */
| public void addOrganisationToExistingList(Organisation organisation);
|
| public void updateOrganisationInExistingList(Organisation organisation);
|
| public void deleteOrganisationFromExistingList(Organisation organisation);
|
| }
|
|
Gavin will probably have sleepless nights over this code... :)
|
| public void addOrganisationToExistingList(Organisation createdOrganisation) {
| log.info("> addOrganisationToExistingList");
| List<Organisation> organisationsList = new ArrayList<Organisation>();
| organisationsList.add(createdOrganisation);
| organisations = organisationsList.toArray(new Organisation[0]);
| sort();
| log.info("< addOrganisationToExistingList");
| }
|
| public void deleteOrganisationFromExistingList(Organisation deletedOrganisation) {
| log.info("> deleteOrganisationFromExistingList");
| List<Organisation> organisationsList = new ArrayList<Organisation>();
| for (Organisation eachOrganisation : organisations) {
| if (deletedOrganisation.getId().compareTo(eachOrganisation.getId()) != 0) {
| organisationsList.add(eachOrganisation);
| }
| }
| organisations = organisationsList.toArray(new Organisation[0]);
| log.info("< deleteOrganisationFromExistingList");
| }
|
| public void updateOrganisationInExistingList(Organisation updatedOrganisation) {
| log.info("> updateOrganisationInExistingList");
| List<Organisation> organisationsList = new ArrayList<Organisation>();
| for (Organisation eachOrganisation : organisations) {
| if (updatedOrganisation.getId().compareTo(eachOrganisation.getId()) != 0) {
| organisationsList.add(eachOrganisation);
| } else {
| em.refresh(eachOrganisation); // Force the update of the organisation in the em cache.
| if (eachOrganisation.getPicture() != null) {
| em.refresh(eachOrganisation.getPicture()); // Force the update of the picture (for the user) in the em cache.
| }
| log.info(" from the DBase (refreshed) => " + eachOrganisation);
| organisationsList.add(eachOrganisation);
| }
| }
| organisations = organisationsList.toArray(new Organisation[0]);
| applyCurrentQuery();
| log.info("< updateOrganisationInExistingList");
| }
|
|
|
and inside my Crud Controller:
| @Stateful
| @Name("cRUDOrganisationController")
| @Conversational
| public class CRUDOrganisationControllerImpl implements Serializable, CRUDOrganisationController {
|
Inject my SSB so I can call back to it.. to tell it its been updated!
| /*
| * When we update the organisation then we have to laise with the FindOrganisationsController to refine its list of organisations.
| */
| @In(create=true)
| @Out
| private FindOrganisationController findOrganisationController;
|
|
And at the end of this external conversation, i call back to the SSB...
| @End
| @TransactionAttribute(TransactionAttributeType.REQUIRED)
| public String update() {
| log.info("> update");
| em.merge(organisation);
| em.flush();
| facesMessages.addFromResourceBundle("organisation_update_successful");
|
| /*
| * We need to update this organisation in the list of organisations in the session scoped FindOrganisationController
| */
| if (findOrganisationController != null) {
| log.info("Organisation sent to database => " + organisation);
| findOrganisationController.updateOrganisationInExistingList(organisation);
| }
|
| log.info("< update");
| return "findOrganisation";
| }
|
Other prople may have other solutions.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4025505#4025505
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4025505
19Â years, 1Â month
[JBoss Messaging] - Re: Failed to download and/or install client side AOP stack
by chip_schoch
I added jboss-aop-jdk50-client.jar and jboss-aspect-jdk50-client.jar to the server lib directory, so my service wouild have access to them, and restarted jboss. Now I got a different exception:
2007-03-06 12:38:28,575 ERROR [STDERR] Exception in thread "Thread-3"
2007-03-06 12:38:28,606 ERROR [STDERR] java.lang.IllegalAccessError: tried to access class org.jboss.aop.LoadInterceptedClassesStrategy from class org.jboss.aop.AspectManager
2007-03-06 12:38:28,606 ERROR [STDERR] at org.jboss.aop.AspectManager.(AspectManager.java:173)
2007-03-06 12:38:28,606 ERROR [STDERR] at org.jboss.aop.AspectManager$2.run(AspectManager.java:276)
2007-03-06 12:38:28,606 ERROR [STDERR] at java.security.AccessController.doPrivileged(Native Method)
2007-03-06 12:38:28,606 ERROR [STDERR] at org.jboss.aop.AspectManager.instance(AspectManager.java:262)
2007-03-06 12:38:28,606 ERROR [STDERR] at org.jboss.aop.AspectManager.instance(AspectManager.java:255)
2007-03-06 12:38:28,840 ERROR [STDERR] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.(ClientConnectionFactoryDelegate.java)
2007-03-06 12:38:28,840 ERROR [STDERR] at sun.misc.Unsafe.ensureClassInitialized(Native Method)
2007-03-06 12:38:28,840 ERROR [STDERR] at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
2007-03-06 12:38:28,840 ERROR [STDERR] at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.lang.reflect.Field.acquireFieldAccessor(Field.java:917)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.lang.reflect.Field.getFieldAccessor(Field.java:898)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.lang.reflect.Field.getLong(Field.java:527)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1586)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:52)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:408)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.security.AccessController.doPrivileged(Native Method)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectStreamClass.(ObjectStreamClass.java:400)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:297)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:531)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699)
2007-03-06 12:38:28,840 ERROR [STDERR] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4025503#4025503
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4025503
19Â years, 1Â month