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