The XML is generated by the config.ru
Headius donated some duby to inspire us
The XML is generated by the config.ru
Headius donated some duby to inspire us
#!/bin/sh | |
export CLASSPATH=./build/lib/servlet.jar:./WEB-INF/lib/appengine-api-1.0-sdk-1.3.1.jar | |
javac com/example/Fancy.java | |
javac com/example/Plain.java | |
javac com/example/Nickname.java | |
mkdir -p WEB-INF/lib | |
jar -cvf WEB-INF/lib/examples.jar com/example/*.class | |
rm com/example/*.class |
package com.example; | |
import java.io.*; | |
import java.text.*; | |
import java.util.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class Fancy extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response) | |
throws IOException, ServletException | |
{ | |
response.setContentType("text/html"); | |
PrintWriter out = response.getWriter(); | |
out.println("<html>\n<head>"); | |
out.println("<title>Hello</title>"); | |
out.println("</head>\n<body style='background-color: LightYellow;'>"); | |
out.println("<h1> Hello Servlet </h1>"); | |
out.println("<img src='/images/appengine-silver-120x30.gif'>"); | |
out.println("</body>\n</html>"); | |
} | |
} |
package com.example; | |
import java.io.IOException; | |
import javax.servlet.http.*; | |
import com.google.appengine.api.users.User; | |
import com.google.appengine.api.users.UserService; | |
import com.google.appengine.api.users.UserServiceFactory; | |
public class Nickname extends HttpServlet { | |
public void doGet(HttpServletRequest req, HttpServletResponse resp) | |
throws IOException { | |
UserService userService = UserServiceFactory.getUserService(); | |
User user = userService.getCurrentUser(); | |
resp.setContentType("text/plain"); | |
String nickname = (user != null) ? user.getNickname() : "nobody"; | |
resp.getWriter().println(nickname); | |
} | |
} |
package com.example; | |
import java.io.IOException; | |
import javax.servlet.http.*; | |
import com.google.apphosting.api.ApiProxy; | |
import com.google.apphosting.api.ApiProxy.Environment; | |
public class Plain extends HttpServlet { | |
public void doGet(HttpServletRequest req, HttpServletResponse resp) | |
throws IOException { | |
Environment env = ApiProxy.getCurrentEnvironment(); | |
String app_id = env.getAppId(); | |
String raw_ver = env.getVersionId(); | |
String version = raw_ver.substring(0,raw_ver.lastIndexOf(".")); | |
String domain = env.getAuthDomain(); | |
// print out some stuff | |
String message = "app_id: " + app_id + "\n" + | |
"version: " + version + "\n" + | |
"domain: " + domain; | |
resp.setContentType("text/plain"); | |
resp.getWriter().println(message); | |
} | |
} |
require 'appengine-rack' | |
require 'appengine-rack/java' | |
AppEngine::Rack.configure_app( | |
:application => "fiddle-sticks", | |
:precompilation_enabled => true, | |
:version => 1) | |
AppEngine::Rack.app.resource_files.exclude '/build**' | |
skip_rack_servlet | |
mime_mapping :xpi => 'application/x-xpinstall', :ru => 'text/plain' | |
map '/fancy' do | |
run JavaServlet.new('com.example.Fancy', :name => 'FancyServlet') | |
end | |
map '/nickname' do | |
use AppEngine::Rack::LoginRequired | |
run JavaServlet.new('com.example.Nickname', :name => 'NicknameServlet') | |
end | |
map '/plain' do | |
run JavaServlet.new('com.example.Plain', :name => 'PlainServlet') | |
end | |
map '/rack' do | |
use JavaServletFilter, 'org.jruby.rack.RackFilter', | |
{ :name => 'RackFilter', :wildcard => true } | |
run lambda { Rack::Response.new("Hello Rack!").finish } | |
end |
<web-app xmlns='http://java.sun.com/xml/ns/javaee' version='2.5'> | |
<security-constraint> | |
<web-resource-collection> | |
<url-pattern>/nickname</url-pattern> | |
<url-pattern>/nickname/*</url-pattern> | |
</web-resource-collection> | |
<auth-constraint> | |
<role-name>*</role-name> | |
</auth-constraint> | |
</security-constraint> | |
<servlet> | |
<servlet-name>NicknameServlet</servlet-name> | |
<servlet-class>com.example.Nickname</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>NicknameServlet</servlet-name> | |
<url-pattern>/nickname</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<servlet-name>FancyServlet</servlet-name> | |
<servlet-class>com.example.Fancy</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>FancyServlet</servlet-name> | |
<url-pattern>/fancy</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<servlet-name>PlainServlet</servlet-name> | |
<servlet-class>com.example.Plain</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>PlainServlet</servlet-name> | |
<url-pattern>/plain</url-pattern> | |
</servlet-mapping> | |
<filter> | |
<filter-name>RackFilter</filter-name> | |
<filter-class>org.jruby.rack.RackFilter</filter-class> | |
</filter> | |
<filter-mapping> | |
<filter-name>RackFilter</filter-name> | |
<url-pattern>/rack</url-pattern> | |
</filter-mapping> | |
<filter-mapping> | |
<filter-name>RackFilter</filter-name> | |
<url-pattern>/rack/*</url-pattern> | |
</filter-mapping> | |
<context-param> | |
<param-name>rackup</param-name> | |
<param-value> | |
Dir.chdir('..') if Dir.pwd =~ /WEB-INF$/; begin; require 'bundler_gems/environment'; rescue LoadError; end;eval IO.read('config.ru'), nil, 'config.ru', 1 | |
</param-value> | |
</context-param> | |
<listener> | |
<listener-class>com.google.appengine.jruby.LazyContextListener</listener-class> | |
</listener> | |
<mime-mapping> | |
<extension>xpi</extension> | |
<mime-type>application/x-xpinstall</mime-type> | |
</mime-mapping> | |
<mime-mapping> | |
<extension>ru</extension> | |
<mime-type>text/plain</mime-type> | |
</mime-mapping> | |
</web-app> |