Thanks for replying.

The stack trace is within Hessian (server side)


StandardWrapperValve[AccountsService]: PWC1406: Servlet.service() for servlet AccountsService threw exception
java.lang.StackOverflowError
at com.caucho.hessian.util.IdentityIntMap.get(IdentityIntMap.java:114) at com.caucho.hessian.io.Hessian2Output.addRef(Hessian2Output.java:1314) at com.caucho.hessian.io.JavaSerializer.writeObject(JavaSerializer.java:141) at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:490) at com.caucho.hessian.io.JavaSerializer.writeObject(JavaSerializer.java:153) at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:490) at com.caucho.hessian.io.JavaSerializer.writeObject(JavaSerializer.java:153) at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:490)
.
.
.


Which seems to suggest it is recursively walking the object graph never reaching the end. (and the object graph is very simple [1])

This could be related to dates, although I am not sure atm.




PS
I am using OpenJPA 1.2.1 on Java 1.6.0_13 on Ubuntu linux 64bit.








[1]  My entity class
@Entity
@Table(name = "accounts")
@NamedQueries({
    @NamedQuery(name = "Account.findByParentAccountId",
query = "SELECT a FROM Account a WHERE a.parentAccountId = :accountId"),
    @NamedQuery(name = "Account.findRootAccountsByCategoryId",
query = "SELECT a FROM Account a WHERE a.accountCategoryId = :accountCategoryId AND a.parentAccountId is null AND a.deletedOn is null")

})
@EntityListeners(AccountHelper.class)
public class Account
        implements Serializable {

    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    @Column(name = "account_id", nullable = false)
    private Integer accountId;

    @Column(name = "account_type", nullable = false)
    private int accountType;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "full_name", nullable = false)
    private String fullName;

    @Column(name = "description")
    private String description;

    @Column(name = "manager", nullable = false)
    private String manager;

    @Column(name = "tree_depth", nullable = false)
    private int treeDepth;

@Column(name = "balance", nullable = false, precision = 20, scale = 6)
    private BigDecimal balance;

    @Column(name = "created_on")
    @Temporal(TemporalType.TIMESTAMP)
    private Date createdOn;

    @Column(name = "created_by")
    private String createdBy;

    @Column(name = "deleted_on")
    @Temporal(TemporalType.TIMESTAMP)
    private Date deletedOn;

    @Column(name = "deleted_by")
    private String deletedBy;

    @Column(name = "parent_account_id")
    private Integer parentAccountId;

    @Column(name = "account_category_id")
    private Integer accountCategoryId;

    @Column(name = "nominal_code")
    private String nominalCode;

** snip getters/setters hashCode equals toString **
}



Rick Curtis wrote:
Peter -

What kind of problems are you having? An exception or stack trace would be
very helpful.

-Rick

Peter Henderson wrote:
...

If I don't manually call em.detach() I get lots of problems when hessian tries to serialize the object for wire transfer.

...




--
Peter Henderson
Director Starjar Limited.

Mobile: +44 (0) 778 233 8645
Email: peter.hender...@starjar.com
Web: www.starjar.com

Reply via email to