[EJB 3.0] - Acegi integration in JBoss
by niityasirï¼ hotmail.com
Dear Sir
I am facing problem in Acegi integration with JBOSS. I have successfully used acegi with servlets using Tomcat 6. In my servlets based application I used following configurations in tomcat.
<filter-name>Acegi Filter Chain Proxy</filter-name>
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>org.acegisecurity.util.FilterChainProxy</param-value>
</init-param>
<filter-mapping>
<filter-name>Acegi Filter Chain Proxy</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener-class>org.springframework.web.util.Log4jConfigList ener</listener-class>
<listener-class>org.springframework.web.context.ContextLoade rListener</listener-class>
My Jboss application is based on EJB 3.0 and JSF. I want to use same filter based Acegi security in my jboss application. But problem is in configurations. I do not know how/where to make these configurations.
Should I have to make changes in
jboss-4.0.4.GA\server\default\deploy\jbossweb-tomcat55.sar\conf\web.xml ?
But this file already have following some other filters.
<filter-name>CommonHeadersFilter</filter-name>
<filter-class>org.jboss.web.tomcat.filters.ReplyHeaderFilt er</filter-class>
<init-param>
<param-name>X-Powered-By</param-name>
<param-value>Servlet 2.4; JBoss-4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)/Tomcat-5.5</param-value>
</init-param>
<filter-mapping>
<filter-name>CommonHeadersFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
I donot think that both of these filters will work at same time.
Kindly help me in this regard.
Thanks
Best Regards
Yasir
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4079909#4079909
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4079909
18Â years, 7Â months
[EJB 3.0] - AnnotationException: xxx not mapped to a single property...
by ttrepper
Hi all,
i get the following AnnotationException, and i don´t know why?
SQL:
| CREATE TABLE Party (
| PartyID BIGINT DEFAULT nextval('seq_PartyID') NOT NULL,
| DateAdded TIMESTAMP DEFAULT current_timestamp,
| ActiveUntil TIMESTAMP,
| CONSTRAINT PK_Party PRIMARY KEY (PartyID)
| );
|
| CREATE TABLE PartyIsPerson (
| PartyIDPerson BIGINT NOT NULL,
| Title CHARACTER VARYING(40),
| Forename CHARACTER VARYING(80) NOT NULL,
| Lastname CHARACTER VARYING(80) NOT NULL,
| Birthday DATE,
| Gender CHARACTER(1),
| MaritalStatus CHARACTER(1),
| CONSTRAINT PK_PartyIsPerson PRIMARY KEY (PartyIDPerson)
| );
|
| CREATE TABLE PersonHasStoredSearches (
| PartyIDPerson BIGINT NOT NULL,
| SequenceNumber SMALLINT NOT NULL,
| SearchName CHARACTER VARYING(100),
| SearchPattern CHARACTER VARYING(100) NOT NULL,
| Active BOOLEAN DEFAULT true,
| DateAdded TIMESTAMP DEFAULT current_timestamp,
| ActiveUntil TIMESTAMP,
| CONSTRAINT PK_PersonHasStoredSearches PRIMARY KEY (PartyIDPerson, SequenceNumber)
| );
|
| CREATE TABLE PersonHasStoredReminders (
| PartyIDPerson BIGINT NOT NULL,
| SequenceNumber SMALLINT NOT NULL,
| ReminderName CHARACTER VARYING(100),
| Schedule TIMESTAMP,
| Active BOOLEAN,
| DateAdded TIMESTAMP DEFAULT current_timestamp,
| ActiveUntil TIMESTAMP,
| CONSTRAINT PK_PersonHasStoredReminders PRIMARY KEY (PartyIDPerson, SequenceNumber)
| );
|
| CREATE TABLE SearchUsesReminder (
| PartyIDPersonReminder BIGINT NOT NULL,
| SequenceNumberReminder SMALLINT NOT NULL,
| PartyIDPersonSearch BIGINT NOT NULL,
| SequenceNumberSearch SMALLINT NOT NULL,
| DateAdded TIMESTAMP DEFAULT current_timestamp,
| ActiveUntil TIMESTAMP,
| CONSTRAINT PK_SearchUsesReminder PRIMARY KEY (PartyIDPersonReminder, SequenceNumberReminder, PartyIDPersonSearch, SequenceNumberSearch)
| );
|
The important table is the last one, which uses the two before.
The tables PersonHasStoredReminders and PersonHasStoredSearches have the PartyIDPerson as a primary key PLUS an incremented (mini)-sequence. Therefore the last table (SearchUsesReminder) has to use both PKs, (4 columns) also as PK.
Class Personhasstoredreminders
| package com.auctonova.ejb.persistence;
|
| import java.io.Serializable;
| import java.sql.Timestamp;
| import java.util.Set;
| import javax.persistence.Embeddable;
| import javax.persistence.EmbeddedId;
| import javax.persistence.Entity;
| import javax.persistence.JoinColumn;
| import javax.persistence.ManyToOne;
| import javax.persistence.OneToMany;
|
| @Entity
| public class Personhasstoredreminders implements Serializable {
| @EmbeddedId
| private Personhasstoredreminders.PK pk;
|
| private Timestamp activeuntil;
|
| private short active;
|
| private Timestamp schedule;
|
| private String remindername;
|
| private Timestamp dateadded;
|
| @ManyToOne
| @JoinColumn(name="partyidperson")
| private Partyisperson partyidperson;
|
| @OneToMany(mappedBy="personhasstoredreminders")
| private Set<Searchusesreminder> searchusesreminderCollection;
|
| private static final long serialVersionUID = 1L;
|
| public Personhasstoredreminders() {
| super();
| }
|
| public Personhasstoredreminders.PK getPk() {
| return this.pk;
| }
|
| public void setPk(Personhasstoredreminders.PK pk) {
| this.pk = pk;
| }
|
| public Timestamp getActiveuntil() {
| return this.activeuntil;
| }
|
| public void setActiveuntil(Timestamp activeuntil) {
| this.activeuntil = activeuntil;
| }
|
| public short getActive() {
| return this.active;
| }
|
| public void setActive(short active) {
| this.active = active;
| }
|
| public Timestamp getSchedule() {
| return this.schedule;
| }
|
| public void setSchedule(Timestamp schedule) {
| this.schedule = schedule;
| }
|
| public String getRemindername() {
| return this.remindername;
| }
|
| public void setRemindername(String remindername) {
| this.remindername = remindername;
| }
|
| public Timestamp getDateadded() {
| return this.dateadded;
| }
|
| public void setDateadded(Timestamp dateadded) {
| this.dateadded = dateadded;
| }
|
| public Partyisperson getPartyidperson() {
| return this.partyidperson;
| }
|
| public void setPartyidperson(Partyisperson partyidperson) {
| this.partyidperson = partyidperson;
| }
|
| public Set<Searchusesreminder> getSearchusesreminderCollection() {
| return this.searchusesreminderCollection;
| }
|
| public void setSearchusesreminderCollection(Set<Searchusesreminder> searchusesreminderCollection) {
| this.searchusesreminderCollection = searchusesreminderCollection;
| }
|
|
| @Embeddable
| public static class PK implements Serializable {
| private long partyidperson2;
| private short sequencenumber;
| private static final long serialVersionUID = 1L;
|
| public PK() {
| super();
| }
|
| public long getPartyidperson2() {
| return this.partyidperson2;
| }
|
| public void setPartyidperson2(long partyidperson2) {
| this.partyidperson2 = partyidperson2;
| }
|
| public short getSequencenumber() {
| return this.sequencenumber;
| }
|
| public void setSequencenumber(short sequencenumber) {
| this.sequencenumber = sequencenumber;
| }
|
| @Override
| public boolean equals(Object o) {
| if (o == this) {
| return true;
| }
| if ( ! (o instanceof PK)) {
| return false;
| }
| PK other = (PK) o;
| return (this.partyidperson2 == other.partyidperson2)
| && (this.sequencenumber == other.sequencenumber);
| }
|
| @Override
| public int hashCode() {
| return ((int) (this.partyidperson2 ^ (this.partyidperson2 >>> 32)))
| ^ this.sequencenumber;
| }
|
| }
|
| }
|
The class Personhasstoredsearches is completely the same
Class SearchUsesReminder:
| package com.auctonova.ejb.persistence;
|
| import java.io.Serializable;
| import java.sql.Timestamp;
| import javax.persistence.Embeddable;
| import javax.persistence.EmbeddedId;
| import javax.persistence.Entity;
| import javax.persistence.JoinColumn;
| import javax.persistence.JoinColumns;
| import javax.persistence.ManyToOne;
|
| @Entity
| public class Searchusesreminder implements Serializable {
| @EmbeddedId
| private Searchusesreminder.PK pk;
|
| private Timestamp activeuntil;
|
| private Timestamp dateadded;
|
| @ManyToOne
| @JoinColumns({
| @JoinColumn(name="sequencenumberreminder", referencedColumnName="sequencenumber"),
| @JoinColumn(name="partyidpersonreminder", referencedColumnName="partyidperson")
| })
| private Personhasstoredreminders personhasstoredreminders;
|
| @ManyToOne
| @JoinColumns({
| @JoinColumn(name="partyidpersonsearch", referencedColumnName="partyidperson"),
| @JoinColumn(name="sequencenumbersearch", referencedColumnName="sequencenumber")
| })
| private Personhasstoredsearches personhasstoredsearches;
|
| private static final long serialVersionUID = 1L;
|
| public Searchusesreminder() {
| super();
| }
|
| public Searchusesreminder.PK getPk() {
| return this.pk;
| }
|
| public void setPk(Searchusesreminder.PK pk) {
| this.pk = pk;
| }
|
| public Timestamp getActiveuntil() {
| return this.activeuntil;
| }
|
| public void setActiveuntil(Timestamp activeuntil) {
| this.activeuntil = activeuntil;
| }
|
| public Timestamp getDateadded() {
| return this.dateadded;
| }
|
| public void setDateadded(Timestamp dateadded) {
| this.dateadded = dateadded;
| }
|
| public Personhasstoredreminders getPersonhasstoredreminders() {
| return this.personhasstoredreminders;
| }
|
| public void setPersonhasstoredreminders(Personhasstoredreminders personhasstoredreminders) {
| this.personhasstoredreminders = personhasstoredreminders;
| }
|
| public Personhasstoredsearches getPersonhasstoredsearches() {
| return this.personhasstoredsearches;
| }
|
| public void setPersonhasstoredsearches(Personhasstoredsearches personhasstoredsearches) {
| this.personhasstoredsearches = personhasstoredsearches;
| }
|
|
| @Embeddable
| public static class PK implements Serializable {
| private short sequencenumbersearch;
| private long partyidpersonsearch;
| private long partyidpersonreminder;
| private short sequencenumberreminder;
| private static final long serialVersionUID = 1L;
|
| public PK() {
| super();
| }
|
| public short getSequencenumbersearch() {
| return this.sequencenumbersearch;
| }
|
| public void setSequencenumbersearch(short sequencenumbersearch) {
| this.sequencenumbersearch = sequencenumbersearch;
| }
|
| public long getPartyidpersonsearch() {
| return this.partyidpersonsearch;
| }
|
| public void setPartyidpersonsearch(long partyidpersonsearch) {
| this.partyidpersonsearch = partyidpersonsearch;
| }
|
| public long getPartyidpersonreminder() {
| return this.partyidpersonreminder;
| }
|
| public void setPartyidpersonreminder(long partyidpersonreminder) {
| this.partyidpersonreminder = partyidpersonreminder;
| }
|
| public short getSequencenumberreminder() {
| return this.sequencenumberreminder;
| }
|
| public void setSequencenumberreminder(short sequencenumberreminder) {
| this.sequencenumberreminder = sequencenumberreminder;
| }
|
| @Override
| public boolean equals(Object o) {
| if (o == this) {
| return true;
| }
| if ( ! (o instanceof PK)) {
| return false;
| }
| PK other = (PK) o;
| return (this.sequencenumbersearch == other.sequencenumbersearch)
| && (this.partyidpersonsearch == other.partyidpersonsearch)
| && (this.partyidpersonreminder == other.partyidpersonreminder)
| && (this.sequencenumberreminder == other.sequencenumberreminder);
| }
|
| @Override
| public int hashCode() {
| return this.sequencenumbersearch
| ^ ((int) (this.partyidpersonsearch ^ (this.partyidpersonsearch >>> 32)))
| ^ ((int) (this.partyidpersonreminder ^ (this.partyidpersonreminder >>> 32)))
| ^ this.sequencenumberreminder;
| }
|
| }
|
| }
|
Exception:
| org.hibernate.AnnotationException: referencedColumnNames(partyidperson, sequencenumber) of com.auctonova.ejb.persistence.Searchusesreminder.personhasstoredsearches referencing com.auctonova.ejb.persistence.Personhasstoredsearches not mapped to a single property
| at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:165)
| at org.hibernate.cfg.FkSecondPass.doSecondPass(FkSecondPass.java:63)
| at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:428)
| at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:286)
| at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1115)
| at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1233)
| at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154)
| at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:869)
| at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:407)
| at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:126)
| at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:246)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
| at java.lang.reflect.Method.invoke(Unknown Source)
| [....] and many more
|
Thank you very much for any hint and best regards,
P.S: The code is completely automatically generated with the Eclipse JPA (DataToolsPlatform 1.5.0)
P.P.S The server is jboss 4.2.1 GA
Thomas
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4079905#4079905
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4079905
18Â years, 7Â months
[JBoss jBPM] - about Jbpm scheduler
by rekyll
Hello !
I have a problem about Jbpm scheduler.
My process definition file is:
| ......
| <task-node name="chiefCheck">
| <task name="chiefCheckTask" swimlane="chief">
| <timer duedate="10 seconds" repeat="5 seconds" name="chiefCheckTimer" transition="end">
| <action class="com.rathink.bpm.example.askforleave.handler.action.ChiefCheckTimerActionHandler"/>
| </timer>
| </task>
| <transition to="timeDecision" name="chiefCheckEnd"/>
| </task-node>
| ......
|
My jbpm.cfg.xml is like this:
| <jbpm-context>
| <service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory"/>
| <service name="tx" factory="org.jbpm.tx.TxServiceFactory"/>
| <service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory"/>
| <service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory"/>
| <service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory"/>
| <service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory"/>
| <service name="authorization" factory="org.jbpm.security.authorization.IdentityAuthorizationServiceFactory"/>
| </jbpm-context>
|
| <string name="resource.hibernate.cfg.xml" value="hibernate.cfg.xml"/>
|
| <string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties"/>
| <string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties"/>
| <string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties"/>
| <string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml"/>
| <string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml"/>
| <string name="resource.parsers" value="org/jbpm/jpdl/par/jbpm.parsers.xml"/>
| <string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml"/>
| <string name="resource.mail.templates" value="jbpm.mail.templates.xml"/>
|
| <int name="jbpm.byte.block.size" value="1024" singleton="true"/>
| <string name="jbpm.mail.smtp.host" value="localhost"/>
| <bean name="jbpm.task.instance.factory" class="org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl"
| singleton="true"/>
| <bean name="jbpm.variable.resolver" class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true"/>
| <bean name="jbpm.mail.address.resolver" class="org.jbpm.identity.mail.IdentityAddressResolver" singleton="true"/>
|
| <bean name="jbpm.job.executor" class="org.jbpm.job.executor.JobExecutor">
| <field name="jbpmConfiguration">
| <ref bean="jbpmConfiguration"/>
| </field>
| <field name="name">
| <string value="JbpmJobExector"/>
| </field>
| <field name="nbrOfThreads">
| <int value="1"/>
| </field>
| <field name="idleInterval">
| <int value="5000"/>
| </field>
| <field name="maxIdleInterval">
| <int value="3600000"/>
| </field>
| <!-- 1 hour -->
| <field name="historyMaxSize">
| <int value="20"/>
| </field>
| <field name="maxLockTime">
| <int value="600000"/>
| </field>
| <!-- 10 minutes -->
| <field name="lockMonitorInterval">
| <int value="60000"/>
| </field>
| <!-- 1 minute -->
| <field name="lockBufferTime">
| <int value="5000"/>
| </field>
| <!-- 5 seconds -->
| </bean>
|
My web.xml is like this:
| ......
| <servlet>
| <servlet-name>JobExecutorServlet</servlet-name>
| <servlet-class>com.rathink.bpm.servlet.JobExecutorServlet</servlet-class>
| <load-on-startup>3</load-on-startup>
| </servlet>
|
| <servlet-mapping>
| <servlet-name>JobExecutorServlet</servlet-name>
| <url-pattern>/jobexecutor</url-pattern>
| </servlet-mapping>
| ......
|
spring + jbpm config:
| <?xml version="1.0" encoding="UTF-8"?>
| <beans xmlns="http://www.springframework.org/schema/beans"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xmlns:jee="http://www.springframework.org/schema/jee"
| xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
| http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
|
| <description>JBPM Configure File</description>
|
| <bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
| <property name="sessionFactory">
| <ref bean="sessionFactory"/>
| </property>
| <property name="configuration">
| <value>/WEB-INF/jbpm.cfg.xml</value>
| </property>
| <property name="createSchema">
| <value>false</value>
| </property>
| </bean>
|
| <bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
| <constructor-arg index="0" ref="jbpmConfiguration"/>
| </bean>
|
| </beans>
|
when i startup my web application, and start a process instance,
throws:
| 2007-08-31 17:35:43.524 [Thread: http-8080-1] org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:255)
| ERROR: action threw exception: service 'scheduler' unavailable
| org.jbpm.svc.JbpmServiceException: service 'scheduler' unavailable
| at org.jbpm.svc.Services.getCurrentService(Services.java:91)
| at org.jbpm.svc.Services.getCurrentService(Services.java:81)
| at org.jbpm.scheduler.def.CreateTimerAction.execute(CreateTimerAction.java:66)
| at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:247)
| at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:215)
| at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:185)
| at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:169)
| at org.jbpm.taskmgmt.exe.TaskInstance.create(TaskInstance.java:169)
| at org.jbpm.taskmgmt.exe.TaskMgmtInstance.createTaskInstance(TaskMgmtInstance.java:149)
| at org.jbpm.graph.node.TaskNode.execute(TaskNode.java:168)
| at org.jbpm.graph.def.Node.enter(Node.java:318)
|
I do not know what should i do........
I have no any idea.......
I could not speak English well, sorry.
Help me, Thanks a lot!!!!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4079895#4079895
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4079895
18Â years, 7Â months
[JBoss Seam] - Re: How to get EntityManager without @In?
by gothmog
Good idea, I tried it but got
| 21:11:46,928 ERROR [STDERR] Exception in thread "Thread-21"
| 21:11:46,928 ERROR [STDERR] java.lang.IllegalStateException: No application context active
| 21:11:46,928 ERROR [STDERR] at org.jboss.seam.Component.forName(Component.java:1690)
| 21:11:46,928 ERROR [STDERR] at org.jboss.seam.Component.getInstance(Component.java:1740)
| 21:11:46,928 ERROR [STDERR] at org.jboss.seam.Component.getInstance(Component.java:1723)
| 21:11:46,928 ERROR [STDERR] at model.EXAccessPoint.flushToDb(EXAccessPoint.java:217)
| 21:11:46,928 ERROR [STDERR] at model.EXAccessPoint.access$0(EXAccessPoint.java:207)
| 21:11:46,928 ERROR [STDERR] at model.EXAccessPoint$InvalidateList.run(EXAccessPoint.java:257)
Then I noticed that my em has ended up in the conversation scope
| 21:10:18,545 INFO [Component] Component: em, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.persistence.ManagedPersistenceContext
|
My components.xml looks like
<core:init debug="true" jndi-pattern="isis-prototype/#{ejbName}/local" transaction-management-enabled="true" />
|
|
| <security:identity authenticate-method="#{authenticator.authenticate}"/>
|
| <web:multipart-filter create-temp-files="true"
| max-request-size="1000000"
| url-pattern="*.seam"/>
|
| <web:context-filter url-pattern="/content/*"/>
|
| <persistence:managed-persistence-context name="em" auto-create="true"
| persistence-unit-jndi-name="java:/viewEntityManagerFactory"/>
and my persistence.xml looks like
| <persistence-unit name="viewDatabase">
| <provider>org.hibernate.ejb.HibernatePersistence</provider>
| <jta-data-source>java:/viewDatasource</jta-data-source>
| <properties>
| <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
| <property name="hibernate.show_sql" value="false"/>
| <!-- These are the default for JBoss EJB3, but not for HEM: -->
| <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
| <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
| <property name="jboss.entity.manager.factory.jndi.name" value="java:/viewEntityManagerFactory"/>
| </properties>
| </persistence-unit>
Any ideas?
I can't remember how I did this, but I did read the seam manual on transactions in conversations and (in another class unrelated to this) I followed the approach given, which was to set the flush mode to manual to get the atomic transactions across a conversation on a @Begin, so...
| @Scope(ScopeType.CONVERSATION)
| public class MaintainProfileAction implements Serializable {
| ...
| @Begin(join=true, flushMode=FlushModeType.MANUAL)
| public void find() {
| ...
|
has this forever put the em in conversation scope I wonder ?
Any ideas? another persistence unit?
Troy
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4079889#4079889
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4079889
18Â years, 7Â months