GWT - paraméteres servlet

GWT - paraméteres servlet
2013-12-16T12:12:51+01:00
2013-12-16T14:59:30+01:00
2022-11-30T05:20:37+01:00
vazul
Sziasztok!

Van egy GWT -s progim, ahol a server oldali servlet egy másik servlettel kommunikál. Ez működik is, de arra gondoltam, hogy jobb lenne a másik servlet URL -jét nem égetném bele a JAVA kódba, hanem a WEB.xml -ben tenném el...

Az alábbi módon néz ki a WEB.xml fájlom és az alábbi módon néz ki a java fájlom. Az a jelenség, hogy a servletURL -vátozóm NULL értéket ad vissza kliensnek és nem értem hogy miért.

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> <display-name> </display-name> <description> </description> <!-- Servlets --> <servlet> <servlet-name>greetServlet</servlet-name> <servlet-class>proba.server.GreetingServiceImpl</servlet-class> <init-param> <param-name>servletURL</param-name> <param-value>http://localhost:8080/MasikServlet/</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>greetServlet</servlet-name> <url-pattern>/proba/greet</url-pattern> <init-param> <param-name>servletURL</param-name> <param-value>http://localhost:8080/MasikServlet/</param-value> </init-param> </servlet-mapping> <!-- Default page to serve --> <welcome-file-list> <welcome-file>Proba.html</welcome-file> </welcome-file-list> </web-app>


package proba.server; public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService { private String servletURL="nincsURL"; public void init(ServletConfig config) throws ServletException { super.init(config); servletURL = config.getServletContext().getInitParameter("servletURL"); } public ArrayList<String[]> greetServer(String input) throws IllegalArgumentException { ArrayList<String[]> myArr = new ArrayList<String[]>(); myArr.clear(); String[] stringData = new String[60]; stringData[0] = servletURL; myArr.add(stringData); return myArr; } }
Mutasd a teljes hozzászólást!
Ott is jó volt, ahol először írtad (sőt, ha szervlet-specifikus az érték, akkor ott az ideális), csak rosszul olvastad ki. Így kellett volna:
public void init(ServletConfig config) throws ServletException { super.init(config); servletURL = config.getInitParameter("servletURL"); }

Tehát nem a ServletContext-től kéred el az init paramétert, hanem a ServletConfig-tól.
Mutasd a teljes hozzászólást!



  • ArrayList<String[]> myArr = new ArrayList<String[]>();
    myArr.clear();


    Biztos ami biztos!

    String[] stringData = new String[60];
    stringData[0] = servletURL;
    myArr.add(stringData);


    Mi ertelme ennek a listaba pakolt String tombnek..?
    Mutasd a teljes hozzászólást!
  • Természetesen ennek így semmi értelme...

    Ez a metódus egy ArrayList -et adna vissza normál esetben, ha ki tudná olvasni a web.xml -ből a paramétert. De nem tudja. Nem akartam mindent betenni a metódusból, csak ami a lényeg. És szerintem az látszódik, hogy hol és hogyan próbálom kiszedni az XML -ből az infót és hogyan adja vissza a kliensnek, amiből azt látom, hogy NULL van a private String servletURL -ben.
    Mutasd a teljes hozzászólást!
  • Meg van a megoldás... Az XML -ben máshová kell tenni a paramétert...


    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> <display-name> </display-name> <description> </description> <context-param> <param-name>servletURL</param-name> <param-value>http://localhost:8080/MasikServlet/</param-value> </context-param> <!-- Servlets --> <servlet> <servlet-name>greetServlet</servlet-name> <servlet-class>proba.server.GreetingServiceImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>greetServlet</servlet-name> <url-pattern>/proba/greet</url-pattern> </servlet-mapping> <!-- Default page to serve --> <welcome-file-list> <welcome-file>Proba.html</welcome-file> </welcome-file-list> </web-app>
    Mutasd a teljes hozzászólást!
  • Ott is jó volt, ahol először írtad (sőt, ha szervlet-specifikus az érték, akkor ott az ideális), csak rosszul olvastad ki. Így kellett volna:
    public void init(ServletConfig config) throws ServletException { super.init(config); servletURL = config.getInitParameter("servletURL"); }

    Tehát nem a ServletContext-től kéred el az init paramétert, hanem a ServletConfig-tól.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd