javaweblogic-10.x

Proxy Implementation with WebLogic 11g


I am using WebLogic server 10.x (11g) to deploy and service my applications. However, our production environment consists of a proxy server which is causing troubles if I try to access certain sites.
Therefore, I would love to know if any feasible solution available to resolve this by configuring the proxy server details on our

  1. WebLogic Environment
  2. Application Level - I am using Java to develop my applications


Thanks in advance.


Solution

  • There are two possible ways to aaccomplish this.

    1. Configuring WebLogic Env.
    2. Programatically

    Let's look at these.
    Proxy Configuration in Application Server Let's take WebLogic application server to illustrate the desired configuration

    Configure WebLogic Server to Enable Proxy

    1. Using WebLogic Administration Console
    1. Login into Administration console
    2. Go to Domain -> Environment -> Servers -> Admin Server -> Configuration -> Server Start
    3. Inside Arguments section enter following and save. -jvmargs -Dhttp.proxySet=true -Dhttp.proxyHost=server_url -Dhttp.proxyPort=port
    4. Restart the WebLogic Server

    2. Using WebLogic Startup Scripts
    1. Open WebLogic domain configuration script at
    2. Search for the following phrase "JAVA_OPTIONS"
    3. Enter following details after that. set JAVA_OPTIONS=%JAVA_OPTIONS% -Dhttp.proxyHost=server_url -Dhttp.proxyPort=port
    4. Save script and start the WebLogic server

    Using Programatically

    There are several implementations available and let's discuss few approaches which I think would be useful.

    Proxy Configuration Using Values

    As highlights below you can configure a proxy using programatically defined values inside your application.

    System.setProperty("http.proxyHost", "proxy_url");
    System.setProperty("http.proxyPort", "port");
    
    Configuration with User Credentials

    Sometimes you may need to provide exact credentials to get through proxy server. Here is an implementation which will help you to achieve this.

    import java.net.Authenticator;
    import java.net.PasswordAuthentication;
    
    
    public class MyAuthenticator extends Authenticator {
        private String username;
        private String password;
    
        public MyAuthenticator(String username, String password){
            this.username = username;
            this.password = password;
        }
    
        public PasswordAuthentication getPasswordAuthentication () {
            return new PasswordAuthentication (username, password.toCharArray());
        }
    }
    

    The defined Authenticator class can be used to inject credentials to the proxy configuration as below.

    System.setProperty("http.proxyHost", "proxy_url");
    System.setProperty("http.proxyPort", "port");
    Authenticator.setDefault (new MyAuthenticator("domain_name\\user_name","password"));
    

    In either case you need to implement the usages at program level as given below. Otherwise, proxy communication will not success and end up throwing exceptions.

    final URL url = new URL(null, urlString, new sun.net.www.protocol.http.Handler());