This page (revision-1) was last changed on 29-Nov-2024 16:16 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 added 262 lines
!!!Moving the Wikis
So I moved my JSPWiki that was running Tomcat from port 9080 to running on port 80.
Now that alone might not have been so tough, but then I also had to change the DNS entries. So my mapping table was like:
* oldbaseurl = http://willeke.com:9080/wikildap/ maps to: newbaseurl = http://ldapwiki.willeke.com/
!Redirect All Traffic
Note as the idea was to redirect ALL traffic hitting this Tomcat Instance, this was installed at the ROOT server. The path would be: /.../tomcat/webapps/ROOT/WEB-INF
If you wanted to only redirect some traffic, you would need to change the code to NOT go to the defaulturl or install this in a specific application context container.
!!Resource File
The redirction is based on entries within the Redirect.properties file.
The file for mine looks like:
{{{
# properties
defaulturl=http://ldapwiki.willeke.com/
oldbaseurl1=http://willeke.com:9080/wikildap/
newbaseurl1=http://ldapwiki.willeke.com/
oldbaseurl2=http://willeke.com:9080/wikiwilleke/
newbaseurl2=http://wiki.willeke.com/
oldbaseurl3=http://willeke.com:9080/classof1968/
newbaseurl3=http://classof1968.willeke.com/
oldbaseurl4=http://willeke.com:9080/wikiwillekegenealogy/
newbaseurl4=http://genealogy.willeke.com/
oldbaseurl5=http://www.willeke.com:9080/wikildap/
newbaseurl5=http://ldapwiki.willeke.com/
oldbaseurl6=http://www.willeke.com:9080/wikiwilleke/
newbaseurl6=http://wiki.willeke.com/
oldbaseurl7=http://www.willeke.com:9080/classof1968/
newbaseurl7=http://classof1968.willeke.com/
oldbaseurl8=http://www.willeke.com:9080/wikiwillekegenealogy/
newbaseurl9=http://genealogy.willeke.com/
}}}
The "defaulturl" was used for anything that did not map.
!!!Query Strings
The URLs for the wiki provided some challenges.
A typical URL might be:
{{{http://willeke.com:9080/wikildap/Wiki.jsp?page=UsefullCommandsForEdirectory}}}
This URL would have to end up like:
{{{http://ldapwiki.willeke.com/Wiki.jsp?page=UsefullCommandsForEdirectory}}}
!!!Methodology
Not being one that wants to know all the bits and bytes of things; but being more interested in the concepts of how thing work.
The oldbaseURLs were put in a HashMap as the key to the newBaseURLs.!!!The Actual Java Code
I am sure there are some Java gurus that would cringe at this but it appears to work.
{{{
package com.willeke.web;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Redirect extends HttpServlet
{
/**
*
*/
private static final long serialVersionUID = 5503481944024425059L;
private static Logger log = Logger.getLogger(Redirect.class.getName());
private static final ResourceBundle bundle = ResourceBundle.getBundle("Redirect");
HashMap<String, String> urlList = new HashMap<String, String>();
private static String DEFAULTSITE = bundle.getString("defaulturl");
/**
* Constructor of the object.
*/
public Redirect()
{
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy()
{
log.info("destroy");
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
log.info("received a Get");
// inCommingUrl="http://willeke.com:9080/wikildap/Wiki.jsp?page=JimWillekeResume";
String site = parseURL(request);
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", site);
response.setContentType("text/html");
Enumeration enumer = request.getAttributeNames();
String query = request.getQueryString();
while (enumer.hasMoreElements())
{
String name = (String) enumer.nextElement();
String value = (String) request.getAttribute(name);
response.addHeader(name, value);
}
PrintWriter out = response.getWriter();
out.flush();
out.close();
}
/**
* The doPost method of the servlet. <br>
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
// InputStream is = request.getInputStream();
log.info("received a post");
// inCommingUrl="http://willeke.com:9080/wikildap/Wiki.jsp?page=JimWillekeResume";
String site = parseURL(request);
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", site);
response.setContentType("text/html");
Enumeration enumer = request.getAttributeNames();
while (enumer.hasMoreElements())
{
String name = (String) enumer.nextElement();
String value = (String) request.getAttribute(name);
response.addHeader(name, value);
}
PrintWriter out = response.getWriter();
out.flush();
out.close();
}
private String parseURL(HttpServletRequest request)
{
String requestURL = request.getRequestURL().toString();
String query = request.getQueryString();
log.info("reqURL = " + request.getRequestURL());
String site = DEFAULTSITE;
Set<String> keyset = urlList.keySet();
Iterator<String> it = keyset.iterator();
while (it.hasNext())
{
String testUrl = (String) it.next();
if (requestURL.startsWith(testUrl))
{
String prefix = (String) urlList.get(testUrl);
String postfix = request.getRequestURL().substring(testUrl.length());
if (postfix.length() > 0)
{
site = prefix + postfix;
} else
{
site = prefix;
}
if (!(query == null))
{
if (query.length() > 0)
{
log.info("queryString: " + query);
site = site + "?" + query;
}
}
}
}
log.info("Sent to : " + site);
return site;
}
/**
* Returns information about the servlet, such as author, version, and
* copyright.
*
* @return String information about this servlet
*/
public String getServletInfo()
{
return "This is my redirect servlet";
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException
{
log.info("Starting INIT");
/**
* http://willeke.com:9080/wikildap/ - http://ldapwiki.willeke.com/
* http://willeke.com:9080/wikiwilleke/ - http://wiki.willeke.com/
* http://willeke.com:9080/classof1968/ -
* http://classof1968.willeke.com/
* http://willeke.com:9080/wikiwillekegenealogy/ -->>
* http://genealogy.willeke.com/
*/
// HashMap urlList = new HashMap();
bundle.getString("defaulturl");
for (int i = 1; i < 10; i++)
{
String oldBaseUrl = "oldbaseurl" + i;
String newBaseUrl = "newbaseurl" + i;
try
{
String oldone = bundle.getString(oldBaseUrl);
String newone = bundle.getString(newBaseUrl);
log.info("Adding OLD URL: " + oldone);
log.info(" mapping to New URL: " + newone);
urlList.put(oldone, newone);
} catch (RuntimeException e)
{
break;
}
}
log.info("Leaving INIT");
// Put your code here
}
}
}}}
!! More Information
There might be more information for this subject on one of the following:
[{ReferringPagesPlugin before='*' after='\n' }]