Servlets 初始化应用程序范围的变量

Servlets 初始化应用程序范围的变量,servlets,soap,wsdl,Servlets,Soap,Wsdl,我有一个基于JSP的Webapp,它正在访问SOAP服务以进行一些身份验证凭据验证。 我想把这个服务URL放在一个应用程序范围变量中,这样我就可以轻松地传递到SOAP调用。最好的方法是什么?将其放入init参数中,然后将其传递给init上的application.wsdlurl?您需要在web.xml中的servlet定义中将其定义为 yourServlet com.example.YourServlet wsdlurl http://... 您可以将其分配为servlet的实例变量,如下所

我有一个基于JSP的Webapp,它正在访问SOAP服务以进行一些身份验证凭据验证。
我想把这个服务URL放在一个应用程序范围变量中,这样我就可以轻松地传递到SOAP调用。最好的方法是什么?将其放入init参数中,然后将其传递给init上的application.wsdlurl?

您需要在
web.xml
中的servlet定义中将其定义为


yourServlet
com.example.YourServlet
wsdlurl
http://...
您可以将其分配为servlet的实例变量,如下所示:

public class YourServlet extends HttpServlet {

    private String wsdlurl;

    @Override
    public void init() throws ServletException {
        wsdlurl = getServletContext().getInitParameter("wsdlurl");
        // Do if necessary some validation.
        // E.g., if null, then throw ServletException.
    }

    // ...
}

你的问题令人困惑。您在标题和标记中提到了JSP,但您所说的是servlet。虽然JSP最终被编译为一个servlet,但JSP和servlet是不同的。我有一个基于JSP的身份验证站点。通过SOAP(JAX-WS)访问身份验证后端ist。此应用程序将有多个实例。因此,身份验证URL需要根据环境进行配置。我阅读了有关getInitParameter()和应用程序范围对URL的应用程序范围访问的信息。但我该如何定义呢?再次感谢!您确实可以为此使用init param。我贴了一个答案和一个例子。非常感谢!这听起来可能有点生疏,但我只是在webapps/(root)中直接使用所有必要的前端逻辑构建了我的应用程序。更复杂的身份验证soap部分封装在类(WEB-INF/classes/$packages)中。我知道这不是真正被认为是“最佳实践”,但它做的工作没有真正的缺点(afaik)。如何使前端(/…)和后端(类)可以访问这些参数?如果它们可以访问
ServletContext
,则可以将其设置为其属性。但是如果他们没有,那么您应该忘记init param方法,而是使用一个属性文件,创建一个静态加载和保存它的类。据我所知,您使用“com.example.YourServlet”指令授予访问权限,这对于我的/*.jsp设置是什么样子的?抱歉,我无法理解您的问题。允许访问?什么意思?在JSP中也需要这个值吗?只需将其设置为
ServletContext
的属性。例如,
getServletContext().setAttribute(“wsdlurl”,wsdlurl)。它将通过
${wsdlurl}
在JSP中可用。我以前尝试过这种东西,但它总是返回NULL。我假设您会为某个类显式定义这些参数。我试试你的方法。谢谢