GithubHelp home page GithubHelp logo

dengzhizhi / j2ep Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 6.0 280 KB

Fork from the http://j2ep.sourceforge.net/ project. A java reverse proxy can be deployed on a J2EE server.

License: Apache License 2.0

Java 100.00%

j2ep's People

Contributors

dengzhizhi avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

j2ep's Issues

patch to specify the connection scheme to the backend

add attribute

scheme="http" or "https" to the server node

single server configuration tested but not clustered (however should work). No unit test cases

--- src/main/java/net/sf/j2ep/model/Server.java Mon Jan 19 23:26:36 1970
+++ src/main/java/net/sf/j2ep/model/Server.java Mon Jan 19 23:26:36 1970
@@ -86,4 +86,10 @@
      * @return The rule we are mapped to
      */
     Rule getRule();
+
+    /**
+     * Returns the scheme to use when connecting to back-end servers
+     * @return
+     */
+   String getScheme();
 }
--- src/main/java/net/sf/j2ep/servers/BaseServer.java   Mon Jan 19 23:26:36 1970
+++ src/main/java/net/sf/j2ep/servers/BaseServer.java   Mon Jan 19 23:26:36 1970
@@ -31,7 +31,13 @@
  */
 public class BaseServer extends ServerContainerBase implements Server {

-    /** 
+    
+   /**
+    * Stores the scheme for access to back-end servers
+    */
+   private String scheme;
+   
+   /** 
      * Marks if this rule server will do any
      * rewriting of links.
      */
@@ -148,4 +154,12 @@
      */
     public void setConnectionExceptionRecieved(Exception e) {
     }
+
+   public String getScheme() {
+       return scheme;
+   }
+
+   public void setScheme(String scheme) {
+       this.scheme = scheme;
+   }
 }
--- src/main/java/net/sf/j2ep/servers/ClusterContainer.java Mon Jan 19 23:26:36 1970
+++ src/main/java/net/sf/j2ep/servers/ClusterContainer.java Mon Jan 19 23:26:36 1970
@@ -209,7 +209,12 @@
      */
     protected class ClusteredServer implements Server {

-        /** 
+        /**
+         * Stores the scheme for back-end server access
+         */
+       private String scheme;
+       
+       /** 
          * The domain name mapping
          */
         private String domainName;
@@ -316,5 +321,13 @@
         public String getServerId() {
             return serverId;
         }
+
+       public String getScheme() {
+           return scheme;
+       }
+
+       public void setScheme(String scheme) {
+           this.scheme = scheme;
+       }
     }
 }
--- src/main/java/net/sf/j2ep/ConfigParser.java Mon Jan 19 23:26:36 1970
+++ src/main/java/net/sf/j2ep/ConfigParser.java Mon Jan 19 23:26:36 1970
@@ -114,6 +114,7 @@
         digester.addCallMethod("config/cluster-server/server", "addServer", 2);
         digester.addCallParam("config/cluster-server/server", 0, "domainName");
         digester.addCallParam("config/cluster-server/server", 1, "path");
+        digester.addCallParam("config/cluster-server/server", 1, "scheme");
         // Create rule
         digester.addObjectCreate("config/cluster-server/rule", null,
                 "className");
--- src/main/java/net/sf/j2ep/ProxyFilter.java  Mon Jan 19 23:26:36 1970
+++ src/main/java/net/sf/j2ep/ProxyFilter.java  Mon Jan 19 23:26:36 1970
@@ -20,7 +20,12 @@
 import java.io.IOException;
 import java.net.UnknownHostException;

-import javax.servlet.*;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

@@ -32,7 +37,12 @@
 import net.sf.j2ep.model.ResponseHandler;
 import net.sf.j2ep.model.Server;

-import org.apache.commons.httpclient.*;
+import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.HttpMethodBase;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.apache.commons.httpclient.cookie.CookiePolicy;
 import org.apache.commons.httpclient.params.HttpClientParams;
 import org.apache.commons.logging.Log;
@@ -90,8 +100,9 @@
         if (server == null) {
             filterChain.doFilter(request, response);
         } else {
+           String scheme = server.getScheme()==null?request.getScheme():server.getScheme();
             String uri = server.getRule().process(getURI(httpRequest));
-            String url = request.getScheme() + "://" + server.getDomainName() + server.getPath() + uri;
+            String url = scheme + "://" + server.getDomainName() + server.getPath() + uri;
             log.debug("Connecting to " + url);

             ResponseHandler responseHandler = null;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.