Thread View: pl.comp.lang.java
6 messages
6 total messages
Started by J-23
Tue, 04 Dec 2012 22:07
Generator GWT klasa po stronie serwera
Author: J-23
Date: Tue, 04 Dec 2012 22:07
Date: Tue, 04 Dec 2012 22:07
66 lines
3698 bytes
3698 bytes
Witam,
Zacząłem się bawić generatorami GWT
Wygenerowanie klasy działa ogólnie ok.
Zastanawia mnie czy nie ma sposoby na wygenerowanie klasy ktora bedzie
docelowo po stronie serwera nie klienta.
mam tutaj taki szkielet:
public String generate(TreeLogger logger, GeneratorContext context,
String typeName) throws UnableToCompleteException {
PrintWriter pw = context.tryCreate(logger,
"pl.cba.lukaszbaczek.server", "GridMetaDataImpl");
if (pw != null) {
pw.println("package pl.cba.lukaszbaczek.server;");
pw.println("");
pw.println("import java.util.List;");
pw.println("");
pw.println("public class GridMetaDataImpl implements
GridMetaDataWrapper {");
pw.println("");
pw.println("private List<NaviSoftColumnConfigGrid>
listNotNullField = new ArrayList<NaviSoftColumnConfigGrid>();");
pw.println("private static List<NaviSoftColumnConfigGrid>
ColumnConfigGrid = new ArrayList<NaviSoftColumnConfigGrid>();");
pw.println("private String tabelName;");
pw.println("");
pw.println("@Override");
pw.println("public List<NaviSoftColumnConfigGrid>
getMetaData(String Database, String Port, String User, String Password,
ConnectionOptions.DBConnectionType ConnectionType,
ConnectionOptions.DBCharsetType CharsetType,
ConnectionOptions.DBCollationType Lc_Ctype, Boolean Commit, String sSQL)
{");
pw.println("Connection conn =
DBConnection.getConnection(Database, User, Password, Port,
ConnectionType,CharsetType, Lc_Ctype, Commit);");
pw.println("return ColumnConfigGrid;");
pw.println("}");
pw.println("}");
context.commit(logger, pw);
Nie jest to kompletna klasa (na potrzebę postu zostawiłem tylko to co
niezbędne)
Generator tworzy klasę GridMetaDataImpl ktora ma byc wygenerowana po
stronie serwera w jedna z metod zawiera w sobie funkcje ktora łączy się
z bazą danych (getConnection), ponizej pełna nazwa wraz z parametrami
Connection conn = DBConnection.getConnection(Database, User, Password,
Port, ConnectionType,CharsetType, Lc_Ctype, Commit);
lecz dostaje komunikat przy próbie wykonania "00:00:00,578 [ERROR] Line
27: No source code is available for type java.sql.Connection; did you
forget to inherit a required module?"
Co by swiadczyło o tym że zachowuje się ta klasa tak samo jakby była
napisana przez programistę recznie po stronie klienta gdzie nie można
używać bezbośrednio "Connection" czy jest możliwość by wygenerować klasę
w ten sposób by mi pobrała dane z bazy i zwróciła , bez potrzeby
odwoływania się w tradycyjny sposób?
Pozdrawiam
Re: Generator GWT klasa po stronie serwera
Author: William Bonawentura
Date: Wed, 05 Dec 2012 06:55
Date: Wed, 05 Dec 2012 06:55
15 lines
1833 bytes
1833 bytes
> Zastanawia mnie czy nie ma sposoby na wygenerowanie klasy ktora bedzie
> docelowo po stronie serwera nie klienta.
Są takie sposoby. Jeśli budujesz projekt z użyciem Mavena to w fazie
build-sources można bez problemu wygenerować źródła. Tyle tylko, że twój
problem nie wymaga aż tak "czołgowego" takiego podejścia. IMHO powinieneś
poczytać o
1) Dynamic proxy - pozwolą ci (po stronie serwera) na utworzenie klasy
implementacji "w locie" już podczas wykonania programu
2) GWT-platform a dokładniej module gwt-dispath. Pozwoli ci on na:
a) wyeliminowanie N serwletów z wpisami w web.xml na rzecz jednego
b) łatwe wprowadzenie hierarchii dziedziczenia handlerów twoich usług
(wydzielenie tego kodu wspólnego z JDBC)
Re: Generator GWT klasa po stronie serwera
Author: J-23
Date: Wed, 05 Dec 2012 14:19
Date: Wed, 05 Dec 2012 14:19
21 lines
1916 bytes
1916 bytes
W dniu 05.12.2012 07:55, William Bonawentura pisze: >> Zastanawia mnie czy nie ma sposoby na wygenerowanie klasy ktora bedzie >> docelowo po stronie serwera nie klienta. > > Są takie sposoby. Jeśli budujesz projekt z użyciem Mavena to w fazie > build-sources można bez problemu wygenerować źródła. Tyle tylko, że twój > problem nie wymaga aż tak "czołgowego" takiego podejścia. IMHO > powinieneś poczytać o > > 1) Dynamic proxy - pozwolą ci (po stronie serwera) na utworzenie klasy > implementacji "w locie" już podczas wykonania programu > 2) GWT-platform a dokładniej module gwt-dispath. Pozwoli ci on na: > a) wyeliminowanie N serwletów z wpisami w web.xml na rzecz jednego > b) łatwe wprowadzenie hierarchii dziedziczenia handlerów twoich > usług (wydzielenie tego kodu wspólnego z JDBC) > > Dzięki za info, poczytam Pozdrawiam
Re: Generator GWT klasa po stronie serwera
Author: J-23
Date: Wed, 05 Dec 2012 23:09
Date: Wed, 05 Dec 2012 23:09
6 lines
1177 bytes
1177 bytes
W dniu 05.12.2012 07:55, William Bonawentura pisze: > Dynamic proxy Chodzi Ci o wzorzec projektowy? Możesz napisać coś więcej? Pozdrawiam
Re: Generator GWT klasa po stronie serwera
Author: Arivald
Date: Thu, 06 Dec 2012 06:00
Date: Thu, 06 Dec 2012 06:00
24 lines
1816 bytes
1816 bytes
W dniu 2012-12-06 00:09, J-23 pisze: > W dniu 05.12.2012 07:55, William Bonawentura pisze: >> Dynamic proxy > > Chodzi Ci o wzorzec projektowy? Możesz napisać coś więcej? > > Pozdrawiam Chodzi o obiekt typu proxy, tworzony dynamicznie dla klasy lub interfejsu, na podstawie danych o typie (RTTI). Np. Spring tak dodaje transakcje do obiektów, jeśli obiekt ma atrybut @Transactional. Metody obiektu proxy dodają obsługę transakcji dookoła określonych metod obiektu bazowego. http://www.ibm.com/developerworks/java/library/j-jtp08305/index.html http://www.javaworld.com/jw-11-2000/jw-1110-proxy.html http://tutorials.jenkov.com/java-reflection/dynamic-proxies.html -- Arivald
Re: Generator GWT klasa po stronie serwera
Author: J-23
Date: Thu, 06 Dec 2012 19:10
Date: Thu, 06 Dec 2012 19:10
24 lines
1882 bytes
1882 bytes
W dniu 06.12.2012 07:00, Arivald pisze: > W dniu 2012-12-06 00:09, J-23 pisze: >> W dniu 05.12.2012 07:55, William Bonawentura pisze: >>> Dynamic proxy >> >> Chodzi Ci o wzorzec projektowy? Możesz napisać coś więcej? >> >> Pozdrawiam > > > Chodzi o obiekt typu proxy, tworzony dynamicznie dla klasy lub > interfejsu, na podstawie danych o typie (RTTI). > > Np. Spring tak dodaje transakcje do obiektów, jeśli obiekt ma atrybut > @Transactional. Metody obiektu proxy dodają obsługę transakcji dookoła > określonych metod obiektu bazowego. > > > http://www.ibm.com/developerworks/java/library/j-jtp08305/index.html > http://www.javaworld.com/jw-11-2000/jw-1110-proxy.html > http://tutorials.jenkov.com/java-reflection/dynamic-proxies.html > > OK, dzieki
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads