Hello,
I am new to the working of GWT.I have created a simple RPC Application
some thing like this
My user defined Class
================
public class StudentDetails implements IsSerializable
{
private static final long serialVersionUID = -5615180217808518977L;
public String name="" ;
public int class1=0;
public int marks1=0;
public int marks2=0;
public String Address="";
public String city="";
public int total=0;
public StudentDetails()
{}
}
My syncronous interface
===============
@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService {
//ArrayList<StudentDetails> getResult();
StudentDetails[] getResult();
String Connect();
}
Asynchronous interface
==============
public interface GreetingServiceAsync {
//void getResult(AsyncCallback<ArrayList<StudentDetails>> callback3);
void getResult(AsyncCallback callback3);
void Connect(AsyncCallback<String> callback4);
}
Server side implementation
===================
@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet
implements
GreetingService {
String tempStr="";
Connection con=null;
String str="";
/**
* @gwt.typeArgs StudentDetails[]
*/
public StudentDetails[] getResult()
{
ArrayList<StudentDetails> tempList=new
ArrayList<StudentDetails>();
try
{
//Connect();
if(con!=null)
{
boolean test=con.isClosed();
if(!test)
{
Statement stmt=con.createStatement();
str="Select
student.name,class,city,address,marks1,marks2 from
student,details where student.name=details.name";
stmt=con.prepareStatement(str);
ResultSet rs=stmt.executeQuery(str);
while(rs.next())
{
StudentDetails st=new StudentDetails();
st.name=rs.getString(1);
st.class1=rs.getInt(2);
st.city=rs.getString(3);
st.Address=rs.getString(4);
st.marks1=rs.getInt(5);
st.marks2=rs.getInt(6);
st.total=st.marks1+st.marks2;
tempList.add(st);
}
rs.close();
con.close();
}
}
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
System.out.println(tempList.size());
return tempList.toArray(new StudentDetails[0]);
}
public String Connect()
{
String str="";
try
{
Class.forName("com.mysql.jdbc.Driver");
String URL="jdbc:mysql://localhost:3306/project";
con=DriverManager.getConnection(URL,"root","Password");
str="connection success";
}
catch(Exception ex)
{
str="Connection Failure";
}
return str;
}
}
Client Side calling Part
===================
private void checkDatabase()
{
greetingService.Connect(new AsyncCallback<String>() {
public void onFailure(Throwable th)
{}
public void onSuccess(String st)
{
Window.alert(st);
}
}) ;
greetingService.getResult(new
AsyncCallback<StudentDetails[]>()
{
public void onFailure(Throwable cought)
{
System.out.println(cought.getMessage());
}
public void onSuccess(StudentDetails[]
st1)
{
try
{
StudentDetails[] st=st1;
Window.alert(Integer.toString(st.length));
ftable.setText(0, 0, "Name");
ftable.setText(0,1,"Class");
ftable.setText(0,2,"Address");
ftable.setText(0,3,"City");
ftable.setText(0,4,"Marks1");
ftable.setText(0,5,"Marks2");
ftable.setText(0,6, "Total");
for(int i=0;i<st.size();i++)
{
StudentDetails
temp=st.get(i);
ftable.setText(i+1, 0,
temp.name);
ftable.setText(i+1,1,Integer.toString(temp.class1));
ftable.setText(i+1,2,temp.Address);
ftable.setText(i+1,3,temp.city);
ftable.setText(i+1,4,Integer.toString(temp.marks1));
ftable.setText(i+1,5,Integer.toString(temp.marks2));
ftable.setText(i+1,6,
Integer.toString(temp.total));
}
if(st.length>0)
RootPanel.get("PanelContainer").add(ftable);
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
}) ;
}
Using this code I am trying to call server side procedure getResult()
which should Return an Array containing student details .The code upto
filling of data in the ArrayList works fine and I am able to get
values in the arrayList but when I try to return this value to the
client .I get the folloeing error :"NativeMethodAccessorImpl.Invoke()
Line not found" .I have tried to implement the same thing by returning
an ArrayList also but I get the same exception there.Please help as
this code has already taken my 3 days.
Following is the stacktrace from debug window
testClientServerJDBC [Web Application]
com.google.gwt.dev.HostedMode at localhost:2335
Thread [main] (Running)
Thread [btpool0-1 - Acceptor0
[email protected]:8080]
(Running)
Thread [btpool0-0] (Running)
Daemon Thread [Timer-0] (Running)
Thread [btpool0-2] (Suspended)
NativeMethodAccessorImpl.invoke(Object, Object[]) line:
not
available
DelegatingMethodAccessorImpl.invoke(Object, Object[])
line: not
available
Method.invoke(Object, Object...) line: not available
RPC.invokeAndEncodeResponse(Object, Method, Object[],
SerializationPolicy) line: 527
GreetingServiceImpl(RemoteServiceServlet).processCall(String) line:
166
GreetingServiceImpl(RemoteServiceServlet).doPost
(HttpServletRequest, HttpServletResponse) line: 86
GreetingServiceImpl(HttpServlet).service(HttpServletRequest,
HttpServletResponse) line: 637
GreetingServiceImpl(HttpServlet).service(ServletRequest,
ServletResponse) line: 717
ServletHolder.handle(ServletRequest, ServletResponse)
line: 487
ServletHandler.handle(String, HttpServletRequest,
HttpServletResponse, int) line: 362
SecurityHandler.handle(String, HttpServletRequest,
HttpServletResponse, int) line: 216
SessionHandler.handle(String, HttpServletRequest,
HttpServletResponse, int) line: 181
JettyLauncher$WebAppContextWithReload(ContextHandler).handle
(String, HttpServletRequest, HttpServletResponse, int) line: 729
JettyLauncher$WebAppContextWithReload(WebAppContext).handle(String,
HttpServletRequest, HttpServletResponse, int) line: 405
RequestLogHandler(HandlerWrapper).handle(String,
HttpServletRequest, HttpServletResponse, int) line: 152
RequestLogHandler.handle(String, HttpServletRequest,
HttpServletResponse, int) line: 49
Server(HandlerWrapper).handle(String,
HttpServletRequest,
HttpServletResponse, int) line: 152
Server.handle(HttpConnection) line: 324
HttpConnection.handleRequest() line: 505
HttpConnection$RequestHandler.content(Buffer) line: 843
HttpParser.parseNext() line: 647
HttpParser.parseAvailable() line: 211
HttpConnection.handle() line: 380
SelectChannelConnector$ConnectorEndPoint(SelectChannelEndPoint).run
() line: 395
QueuedThreadPool$PoolThread.run() line: 488
Daemon Thread [MySQL Statement Cancellation Timer] (Running)
C:\Program Files\Java\jre6\bin\javaw.exe (Aug 17, 2009 12:49:43 PM)
Thanks in Advance
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---