users@grizzly.java.net

Grizzly and Servlet Adapter

From: Richard Corsale <igf1_at_yahoo.com>
Date: Sun, 1 Feb 2009 08:42:08 -0800 (PST)

Ok, so.. unless im missing something here, the servlet to adapter ration is 1:1 like i can only add one servlet to one adapter and I have to make a new adapter for each servlet?

If thats the case, whats the sadapter.addServletListener("API.Web.Servlets"); for? as shown in the latest example on http://weblogs.java.net/blog/jfarcand/archive/2009/01/extending_the_g_5.html

--Thanks
Richard






________________________________
From: Survivant 00 <survivant00_at_gmail.com>
To: users_at_grizzly.dev.java.net
Sent: Saturday, January 31, 2009 7:28:11 PM
Subject: php on GrizzlyWebServer 100%java with JSR 223

I have something that can do PHP wihtout native php installation.

I wasn't able to get Quercus servlet to work with GrizzlyWebServer, but I have a workaround for now that will allow the users to run php with the JSR223.

you have a create a serlvet that you will use with GrizzlyWebServer (I'll post a complete demo on my blog later this weekend)




    protected void doPut (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        
        System.out.println("doPut");
        
        Object php2javaResult = null;
        
        ScriptContext context = phpEngine.getContext();

        try {
            context.setWriter(new StringWriter());
            
            //put the parameters and attributes into the engine
            Enumeration attributes = req.getAttributeNames();
            
            while (attributes.hasMoreElements()) {
                String key = (String) attributes.nextElement();
                
                // put the parameters and attributes into the engine
                phpEngine.put(key, req.getAttribute(key));
            }
            
            Map<String, Object> params = req.getParameterMap();
            
            for (Iterator iterator = params.keySet().iterator(); iterator.hasNext();) {
                String key = (String) iterator.next();
                
                // put the parameters and attributes into the engine
                phpEngine.put(key, params.get(key));
            }
            
            // need a better way to find the requested file
            String uri = req.getRequestURI();
            
            if(uri.startsWith("/")){
                uri = uri.substring(1);
            }
            
            php2javaResult = phpEngine.eval(new FileReader(uri), context);
            //php2javaResult = phpEngine.eval(new FileReader("phpinfo.php"), context);
            StringWriter writer = (StringWriter) context.getWriter();
            res.getWriter().println(writer.toString());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
    }
    
    protected void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        doPut(req, res);
    }


if I enter the URL :
http://localhost/phpinfo.php?coucou&id=12

the file phpinfo will be executed with the params in the URL.


PS. if I need to put attributes in the response just tell me.. I did though about that.

PS2 : if you need a complete solution... Glassfish with Quercus is one good solution.

PS3 : I used Quercus librairies for this example.


2009/1/29 Richard Corsale <igf1_at_yahoo.com>

Great tutorial man!! I was wondering about this very subject the other day.

I still can't get my PHP scripts to run on Grizzly... I don't know why I wrote them in SQL?? :)

--Richard
 




________________________________
 From: Survivant 00 <survivant00_at_gmail.com>
To: users_at_grizzly.dev.java.net
Sent: Thursday, January 29, 2009 1:53:27 PM
Subject: Demo : How to host jsp files with GrizzlyWebServer


I did a little demo how to use JSP and GrizzlyWebServer.

http://weblogs.java.net/blog/survivant/archive/2009/01/jsp_on_grizzlyw.html

you won't do a complete web server with that.. but I'm sure you can still have fun :)