2011-11-10 5 views
0

일부 인증 자격 증명을 위해 SOAP 서비스에 액세스하는 JSP 기반 Webapp가 있습니다. 이 서비스 URL을 응용 프로그램 범위 변수에 넣어서 SOAP 호출을 쉽게 전달할 수 있습니다. 이 일을하는 가장 좋은 방법은 무엇입니까? init-param에 넣은 다음 init에 application.wsdlurl에 전달하십시오.응용 프로그램 범위 변수 초기화

+0

귀하의 질문은 혼란 스럽다. JSP를 제목과 태그로 언급했지만 서블릿에 대해 이야기하고 있습니다. JSP가 궁극적으로 서블릿으로 컴파일되는 동안 JSP는 서블릿과 동일하지 않습니다. – BalusC

+0

엉터리 질문에 사과드립니다. 나는 JSP 기반의 Authentication-Site를 가지고있다. Auth-Backend는 SOAP (JAX-WS)를 통해 액세스됩니다. 이 응용 프로그램의 인스턴스가 여러 개있을 것입니다. 따라서 Auth-URL은 환경별로 구성 가능해야합니다. 나는 getInitParameter()와 URL에 대한 응용 프로그램 전체 액세스를위한 응용 프로그램 범위에 대해 읽었습니다. 그러나 나는 그것을 어디에서 정의 할 것인가? 다시 한번 감사드립니다. – AlessandroEmm

+0

실제로 init-param을 사용할 수 있습니다. 나는 답을 예제로 게시했다. – BalusC

답변

1

web.xml의 서블릿 정의에서 <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> 

당신은 서블릿의 인스턴스 변수로 할당 할 수

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

관련 문제