I tried a few things today but beside more problems, no solution yet.
1. Created a few POJOs and added a bunch of JPA annotations to them
(including the javax.persistence.CascadeType). In my RPC service
class, I manually instantiate a POJO and return it. This works fine.
The GWT compiler/shell is not complaining about any annotations. I'm
still using Gilead and GWT-SL with the -noserver option.
2. For my second attempt, I configured the above POJOs in my Spring
AnnotationSessionFactoryBean, e.g
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource"><ref bean="dataSource"/></property>
...
<property name="annotatedClasses">
<list>
...
<value>au.gov.vic.dpi.mpd.geodatavic2.module.domain.client.model.security.User</
value>
</list>
</property>
</bean>
Note, I still just manually create the User class in the RPC service
class, I'm not actually retrieving anything from database via
Hibernate but it didn't work. I got the following exception (on the
server):
SEVERE: Exception while dispatching incoming RPC call
java.lang.RuntimeException: java.lang.NullPointerException
at
org.gwtwidgets.server.spring.GWTRPCServiceExporter.handleExporterProcessingException
(GWTRPCServiceExporter.java:344)
at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall
(GWTRPCServiceExporter.java:313)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost
(RemoteServiceServlet.java:86)
at org.gwtwidgets.server.spring.GWTRPCServiceExporter.handleRequest
(GWTRPCServiceExporter.java:363)
at
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle
(HttpRequestHandlerAdapter.java:49)
at org.springframework.web.servlet.DispatcherServlet.doDispatch
(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService
(DispatcherServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest
(FrameworkServlet.java:476)
at org.springframework.web.servlet.FrameworkServlet.doPost
(FrameworkServlet.java:441)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at net.sf.gilead.core.hibernate.HibernateUtil.isUnsavedValue
(HibernateUtil.java:1328)
at net.sf.gilead.core.hibernate.HibernateUtil.getId
(HibernateUtil.java:290)
at net.sf.gilead.core.hibernate.HibernateUtil.getId
(HibernateUtil.java:200)
at net.sf.gilead.core.hibernate.HibernateUtil.isPersistentPojo
(HibernateUtil.java:314)
at net.sf.gilead.core.PersistentBeanManager.clonePojo
(PersistentBeanManager.java:325)
at net.sf.gilead.core.PersistentBeanManager.clone
(PersistentBeanManager.java:241)
at net.sf.gilead.gwt.GileadRPCHelper.parseReturnValue
(GileadRPCHelper.java:129)
at
org.gwtwidgets.server.spring.hb4gwt.HB4GWTRPCServiceExporter.invokeMethodOnService
(HB4GWTRPCServiceExporter.java:63)
at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall
(GWTRPCServiceExporter.java:298)
... 21 more
I'm still scratching my head about this one...
3. I did try to retrieve POJOs from the database instead of manually
creating them but I got the same result.
The POJOs are quite simple. Here's an example. Why this doesn't work
is a mistery to me.
@Entity
@Table(name = "USERS", schema = "SECURITY")
public class Users extends LightEntity implements java.io.Serializable
{
private String userId;
private Date endDate;
private Set<ApplicationRoles> applicationRoleses = new
HashSet<ApplicationRoles>(0);
public Users() {
}
@Id
@Column(name = "USER_ID", unique = true, nullable = false, length =
25)
public String getUserId() {
return this.userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Temporal(TemporalType.DATE)
@Column(name = "END_DATE", length = 7)
public Date getEndDate() {
return this.endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,
mappedBy = "users")
public Set<ApplicationRoles> getApplicationRoleses() {
return this.applicationRoleses;
}
public void setApplicationRoleses(Set<ApplicationRoles>
applicationRoleses) {
this.applicationRoleses = applicationRoleses;
}
}
On Mar 5, 1:56 pm, sutarsa giri <
sutarsa.g...@gmail.com> wrote:
> Hi,
> you may need to take a look at -noserver option when running your gwt shell.
> with this, you could use your favorite servlet container as server for your
> gwt shell.
>
> regards,
> Gede sutarsa
>
> 2009/3/3 grishag <
grigori.gold...@gmail.com>