-1

我不确定这个问题是否看起来很愚蠢。但我是 servlet 的新手。所以在这里发布我的问题。

我有一个包含大约 5 个 servlet 的应用程序,需要在获得与应用程序服务器(OIM)的连接后调用应用程序 API。所以我需要使用从其他 servlet 到 OIM 的现有连接,该连接由同一个 war 文件中的第一个 servlet 打开。

我的代码是这样的。

//Class 1
public class ValidateUserName extends HttpServlet {
//Servlet 1
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        ...
        ...
        UserOperations userOperations = new UserOperations();
        String CommonName = userOperations.getCommonName(userName);
        String userStatus =  userOperations.getUserStatus(userName);
        ...
        ...
        }
...
...
}

//Class 2
public class UserOperations {
public UserOperations() {
    String USERNAME = Utils.getProperty("USERNAME");
    String PASSWORD = Utils.getProperty("PASSWORD");
    String PROVIDER_URL = Utils.getProperty("PROVIDER_URL");

    OIMConnect oimConnect = new OIMConnect();
    this.oimClient = oimConnect.loginToOIM(USERNAME, PASSWORD, PROVIDER_URL);
}
...
...
}

//Class 3
public class PasswordReset extends HttpServlet {
//Servlet 2
protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
         /*
          * I would like to use same oimConnect connection that was instantiated 
          * in UserOperations() constructor. 
          */
    }
    ...
    ...
    }

我不能使用 setAttribute,因为我没有在 servlet 上引用 OIM 客户端。与 OIM 服务器的连接在非 servlet 类中打开。

在这种情况下,如何跨所有 servlet 使用现有的 OIM 连接?

4

1 回答 1

0

您应该将连接工厂定义为 JNDI 资源,以便可以从任何 servlet 中查找它。

于 2016-03-07T20:36:10.980 回答