Howdy..
This is the J2se5 code:   
 admobRequiredParams = new HashMap();
Map admobControlParams = new HashMap();
Map admobOptionalParams = new HashMap();
admobRequiredParams.put("ANALYTICS_ID", "na"); // Required to collect Analytics data. To find your Analytics ID, log in to your Analytics account and click on the "Edit" link next to the name of your site.
admobRequiredParams.put("COOKIE_DOMAIN", null); // If your mobile site uses multiple subdomains, replace "null" with your root domain (e.g. "example.com") to make the AdMob cookie visible across subdomains.
admobControlParams.put("ANALYTICS_REQUEST", true); // To enable the collection of analytics data, set to true.
admobControlParams.put("TEST_MODE", false);  // While testing, set to true. When you are ready to make live requests, set to false.
// Additional optional parameters are available at: 
http://developer.admob.com/wiki/AdCodeD ... ation   
// admobOptionalParams.put("title", "Enter Page Title Here"); // Analytics allows you to track site usage based on custom page titles. Enter custom title in this parameter.
// admobOptionalParams.put("event", "Enter Event Name here"); // To learn more about events, log in to your Analytics account and visit this page: 
http://analytics.admob.com/reports/events/add
// Send request to AdMob. To make additional ad requests per page, copy and paste this function call elsewhere on your page.
out.print(admobRequest(request, response, pageContext, admobRequiredParams, admobControlParams, admobOptionalParams));
%>
 requiredParams, Map controlParams, Map optionalParams) {
  if (requiredParams == null || controlParams == null)
    return "";
  StringBuilder admobReturn = new StringBuilder();
  try {
    Boolean adMode = false;
    if (requiredParams.get("PUBLISHER_ID") != null && controlParams.get("AD_REQUEST") != null)
      adMode = controlParams.get("AD_REQUEST");
     
    Boolean analyticsMode = false;
    Boolean pixelSent = (pageContext.getAttribute("admobPixelSent") == "true") ? true : false;
    if (requiredParams.get("ANALYTICS_ID") != null && controlParams.get("ANALYTICS_REQUEST") != null && !pixelSent)
      analyticsMode = controlParams.get("ANALYTICS_REQUEST");
     
    String rt = adMode ? (analyticsMode ? "2" : "0") : (analyticsMode ? "1" : "-1");
    if (rt == "-1") return "";
   
    double now = System.currentTimeMillis()/(double)1000;
    DecimalFormat df = new DecimalFormat("0.000");
    String z = df.format(now);
    String p = request.getRequestURL().toString() + (request.getQueryString() == null ? "" : "?" + request.getQueryString().toString());
    String o = admobGetCookieValue(request, response, pageContext, requiredParams.get("COOKIE_DOMAIN"));
   
    StringBuilder admobContents = new StringBuilder();
    admobAppendParams(admobContents, "rt", rt);
    admobAppendParams(admobContents, "z", z);
    admobAppendParams(admobContents, "u", request.getHeader("User-Agent"));
    admobAppendParams(admobContents, "i", request.getRemoteAddr());
    admobAppendParams(admobContents, "p", p);
    admobAppendParams(admobContents, "t", admobMd5(request.getSession() == null ? null : request.getSession().getId()));
    admobAppendParams(admobContents, "v", "20081105-JAVA15-b9c74666c607fc70");
    admobAppendParams(admobContents, "o", o);
    if (adMode) admobAppendParams(admobContents, "s", requiredParams.get("PUBLISHER_ID"));
    if (analyticsMode) admobAppendParams(admobContents, "a", requiredParams.get("ANALYTICS_ID"));
   
    if (optionalParams != null) {
      for (Map.Entry entry : optionalParams.entrySet()) {
        admobAppendParams(admobContents, entry.getKey(), entry.getValue());
      }
    }
   
    List ignoreHeaders = Arrays.asList(new String[]{"PRAGMA", "CACHE-CONTROL", "CONNECTION", "USER-AGENT", "COOKIE"});
    for (Enumeration names = request.getHeaderNames(); names.hasMoreElements()Wink {
      String name = names.nextElement();
      if (!ignoreHeaders.contains(name.toUpperCase()))
        admobAppendParams(admobContents, "h["+name+"]", request.getHeader(name));
    }
    if (controlParams.get("TEST_MODE") != null && controlParams.get("TEST_MODE")) admobContents.append("&m=test");
   
    BufferedReader admobReader = null;
    int ADMOB_TIMEOUT = 1000; // 1 second timeout
    long start = System.currentTimeMillis();
    try {
      URL admob_url = new URL("
http://r.admob.com/ad_source.php");
      HttpURLConnection admobConnection = (HttpURLConnection)admob_url.openConnection();
      admobConnection.setRequestMethod("POST");
      admobConnection.setDoOutput(true);
      admobConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
      admobConnection.setRequestProperty("Content-Length", Integer.toString(admobContents.length()));
      admobConnection.setConnectTimeout(ADMOB_TIMEOUT);
      admobConnection.setReadTimeout(ADMOB_TIMEOUT);
      BufferedWriter admobWriter = new BufferedWriter(new OutputStreamWriter(admobConnection.getOutputStream()));
      admobWriter.write(admobContents.toString());
      admobWriter.close();
      admobReader = new BufferedReader(new InputStreamReader(admobConnection.getInputStream()));
     
      for (String line; (line = admobReader.readLine()) != null;)
        admobReturn.append(line);
    }
    catch (Exception e) {admobReturn.setLength(0);}
    finally {if (admobReader != null) admobReader.close();}
    long stop = System.currentTimeMillis();
   
    if (!pixelSent) {
      pageContext.setAttribute("admobPixelSent", "true");
      admobReturn.append("");
    }
  }
  catch (Exception e) {}
  return admobReturn.toString();
}
private String admobGetCookieValue(HttpServletRequest request, HttpServletResponse response, PageContext pageContext, String cookieDomain) {
  try {
    Cookie cookies[] = request.getCookies();
    if (cookies != null) {
      for (int i = 0; i  0) {
    if (contents.length() > 0) contents.append("&");
    contents.append(URLEncoder.encode(key, "UTF-8")).append("=").append(URLEncoder.encode(val, "UTF-8"));
  }
}
%>
and putting it in just leaves a mess...
-John