2011-11-10 52 views
0

我有一個基於JSP的Web應用程序,它正在訪問SOAP服務以進行一些驗證憑證驗證。 我想將這個服務URL放在應用程序範圍的變量中,這樣我就可以輕鬆地傳遞給SOAP調用。什麼是最好的方法來做到這一點?把它放在init-param中,然後將它傳遞給init上的application.wsdlurl?初始化應用程序作用域變量

+0

你的問題是混亂的。您在標題和標籤中提到了JSP,但您正在談論一個servlet。儘管JSP最終被編譯爲一個servlet,但JSP與servlet並不相同。 – BalusC

+0

對不起,這個蹩腳的問題。我有一個基於JSP的身份驗證站點。通過SOAP(JAX-WS)訪問Auth-Backend。這個應用程序會有多個實例。因此,Auth-URL需要在每個環境中進行配置。我閱讀了關於getInitParameter()和應用程序範圍的全域程序訪問URL。但我在哪裏定義? 再次感謝! – AlessandroEmm

+0

你確實可以爲此使用init-param。我用一個例子發佈了一個答案。 – BalusC

回答

1

您需要在web.xml的servlet定義中將其定義爲<init-param>

<servlet> 
    <servlet-name>yourServlet</servlet-name> 
    <servlet-class>com.example.YourServlet</servlet-class> 
    <init-param> 
     <param-name>wsdlurl</param-name> 
     <param-value>http://...</param-value> 
    </init-param> 
</servlet> 

如下您可以指定它作爲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. 
    } 

    // ... 
} 
+0

非常感謝!這聽起來可能是新手,但我只是用webapps /(root)中的所有必要的前端邏輯構建了我的應用程序。更復雜的auth-soap部分被封裝在類(WEB-INF/classes/$ packages)中。我知道這並不是真的被認爲是「最佳實踐」,但它沒有真正的缺點(afaik)。我將如何使前端(/ ..)和後端(類)可訪問這些參數? – AlessandroEmm

+0

如果他們有權訪問'ServletContext',則可以將其設置爲它的一個屬性。但是,如果他們沒有,那麼你應該忘記init-param方法,而是使用一個屬性文件來創建一個靜態加載和保存它的類。 – BalusC

+0

據我所知,您授予「 com.example.YourServlet」指令的訪問權限,這對於我的/*.jsp安裝程序來說如何? – AlessandroEmm