🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#153678
Author: J-23
Date: Tue, 04 Dec 2012 22:07
66 lines
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
#153672
Author: William Bonawentura
Date: Wed, 05 Dec 2012 06:55
15 lines
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
#153680
Author: J-23
Date: Wed, 05 Dec 2012 14:19
21 lines
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
#153677
Author: J-23
Date: Wed, 05 Dec 2012 23:09
6 lines
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
#153681
Author: Arivald
Date: Thu, 06 Dec 2012 06:00
24 lines
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
#153682
Author: J-23
Date: Thu, 06 Dec 2012 19:10
24 lines
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