konto usunięte
Temat: GWT+Ibatis
WitamWiecie może jak podpiąć ibatis-a pod projekt w GWT, wiem ze to się robi przez GWT RPC.
Wszystko robię tak jak jest to opisane lecz i tak cos jest nie działa.
==============
STRONA KLIENCKA:
Person service:**
package com.gwt.ibatis.client;
import com.google.gwt.user.client.rpc.RemoteService;
public interface PersonService extends RemoteService{
Person[] select();
}
Asyn:
package com.gwt.ibatis.client;
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface PersonServiceAsync {
void select(AsyncCallback callback);
}
loader:
package com.gwt.ibatis.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
public class PersonServiceLoader {
public static PersonServiceAsync getPerson()
{
PersonServiceAsync calService = (PersonServiceAsync)GWT.create(PersonService.class);
ServiceDefTarget target = (ServiceDefTarget) calService;
String moduleRelativeURL = GWT.getModuleBaseURL() + "ibatis";
target.setServiceEntryPoint(moduleRelativeURL);
return calService;
}
}
=============
STRONA SERVERA
PersonServiceImpl:**
package com.gwt.ibatis.server;
import java.sql.SQLException;
import java.util.List;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.gwt.ibatis.client.Person;
import com.gwt.ibatis.client.PersonService;
import com.ibatis.sqlmap.client.SqlMapClient;
public class PersonServiceImpl extends RemoteServiceServlet implements PersonService {
public Person[] select() {
SqlMapClient client = IbatisManager.getSqlMapClient();
try {
List li = client.queryForList("kl.selectPerson");
return (Person[])li.toArray(new Person[li.size()]);
}
catch (SQLException e){
e.printStackTrace();
throw new RuntimeException(e.getMessage(), e);
}
}
}
Ibatis manager:
package com.gwt.ibatis.server;
import java.io.IOException;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class IbatisManager {
public static SqlMapClient getSqlMapClient() {
try {
Reader reader = Resources.getResourceAsReader("com/gwt/ibatis/server/sqlMapConfig.xml");
SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
return sqlMapper;
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage(), e);
}
}
}
ENTERY POINT:**
public void onModuleLoad() {
final Grid grid = new Grid(1,2);
grid.setText(0, 0, "id");
grid.setText(0, 1, "name");
PersonServiceAsync service = PersonServiceLoader.getPerson();
service.select(new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
Window.alert("Failure RPC call");
}
@Override
public void onSuccess(Object result) {
Person[] person = (Person[]) result;
for (int row = 0; row < person.length; ++row) {
grid.resizeRows(grid.getRowCount() + 1);
//grid.setText(row + 1, 0, person[row].getIdstatus());
grid.setText(row + 1, 1, person[row].getImie().toString());
}
}
});
RootPanel.get("slot1").add(grid);
}
i ibatis.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='ibatis'>
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
<entry-point class='com.gwt.ibatis.client.Ep'/>
<servlet path="/ibatis" class="com.gwt.ibatis.server.PersonServiceImpl"></servlet>
</module>
Bibilioteke ibatisa i oracle dodalem do War/WEB-INF/lib.
w package ....client jest klasa Person serialozowana