Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #8001

Re: JSF/JPA problem

From Arved Sandstrom <asandstrom3minus1@eastlink.ca>
Newsgroups comp.lang.java.programmer
Subject Re: JSF/JPA problem
References (1 earlier) <VZObq.20744$oz6.19581@newsfe11.iad> <XcPbq.17471$CQ4.165@newsfe09.iad> <j4om1r$a40$1@dont-email.me> <EWRbq.10526$EP3.6864@newsfe05.iad> <j4or6k$ctb$1@dont-email.me>
Message-ID <MqTbq.18258$YA4.3466@newsfe14.iad> (permalink)
Organization Public Usenet Newsgroup Access
Date 2011-09-13 22:28 -0300

Show all headers | View raw


On 11-09-13 09:06 PM, markspace wrote:
> On 9/13/2011 4:45 PM, Arved Sandstrom wrote:
> 
>> You could try leaving out the flush(), and simply close the EM at the
>> end of createPost(). This would track Example 5.7.1.1. Let's see if you
>> still get the TransactionRequiredException. That would then demonstrate
>> that there really is no active JTA transaction...
> 
>> Since you expect to be set up for JTA, you could also dispense with the
>> use of application-managed, and use @PersistenceContext DI instead, a la
>> Example 5.6.4.1 - this is about as easy as it gets.
> 
> 
> Just to reiterate the post I just added to this thread, I already
> switched to PersistenceContext for DI, and the error has now moved from
> the em.flush() to the em.persist( post ) on the line previous.  So I
> have to conclude that if I add an em.close(), I'll still now have the
> error previous to the close().  I'll give it a try at some point.
> 
> 
>> You have me interested; I will try this situation out on Glassfish.
> 
> 
> Thanks for playing around with this, it really has me stumped.

I just now fired up a new EAR app in Eclipse Indigo running Glassfish
3.1; two projects, a WAR, and a EJB project with the JPA facet. I am
using PostgreSQL 9.0, and set up a datasourec against that in the
Glassfish admin console. The persistence.xml was extremely simple:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="StateMachinesServices
  <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider
  <jta-data-source>jdbc/PostgreSQLPool</jta-data-source
  <class>org.ahs.sm.model.State</class>
  <exclude-unlisted-classes>true</exclude-unlisted-classes>
  <properties>
    <property name="eclipselink.ddl-generation" value="none"/>
    <property name="eclipselink.target-database" value="PostgreSQL"/
  </properties>
</persistence-unit>
</persistence>

The single test entity is set up as

@Entity
public class State implements Serializable {
  private static final long serialVersionUID = 1L;

  @Id
  @SequenceGenerator(name = "STATE_ID_GEN",
    sequenceName="STATE_ID_SEQ", allocationSize=1)
  @GeneratedValue(strategy=GenerationType.SEQUENCE,
    generator = "STATE_ID_GEN")
  private Integer id;
  private String name;
  private String status;

  ...
}

The session bean I set up as

@Stateless
@LocalBean
public class CreateState {

  @PersistenceUnit
  EntityManagerFactory emf;
	
  public void createState() {
    EntityManager em = emf.createEntityManager();
    State state = new State();
    state.setName("state1");
    state.setStatus("OK");
    em.persist(state);
    em.close();
  }
}

This is simply called from a JSF managed bean method hit through a
h:commandButton. So essentially your setup.

I just now noticed something, though, which might well explain the
problem. I have a genuine unvarnished EJB (my CreateState session bean).
You on the other hand have something that looks like a hybrid: both
javax.ejb.Stateless and javax.faces.bean.ManagedBean annotations on it.
I have no idea what this combo will do. :-)

When I call my session bean from my JSF managed bean, I inject it with
@EJB. You're not doing that, so you have basically what looks like a
basic Java method call, and there's a good chance the annotations are
being ignored.

Side note: when I set this new project up tonight I started out with JDK
1.7. Bad move - VerifyErrors and what have you. I had to switch back to
JDK 1.6.

AHS
-- 
job creator: US Republican term for a wealthy party contributor

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

JSF/JPA problem markspace <-@.> - 2011-09-13 09:19 -0700
  Re: JSF/JPA problem Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-13 17:24 -0300
    Re: JSF/JPA problem Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-13 17:40 -0300
      Re: JSF/JPA problem markspace <-@.> - 2011-09-13 15:38 -0700
        Re: JSF/JPA problem markspace <-@.> - 2011-09-13 17:06 -0700
          Re: JSF/JPA problem Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-13 22:28 -0300
            Re: JSF/JPA problem Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-13 22:31 -0300
              Re: JSF/JPA problem markspace <-@.> - 2011-09-13 19:27 -0700
                Re: JSF/JPA problem Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-14 05:59 -0300
            Re: JSF/JPA problem markspace <-@.> - 2011-09-14 10:36 -0700
              Re: JSF/JPA problem Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-14 17:51 -0300
      Re: JSF/JPA problem markspace <-@.> - 2011-09-13 16:12 -0700

csiph-web