2012-12-05 2 views
8

최종적으로 내 클라이언트를 실행하는 JNLP를 실행하기 위해 JavaScript를 사용하고 있습니다.JNLP를 통해 동적 매개 변수 전달

자바 스크립트 실행을 통해 매개 변수를 JNLP에 전달하고 클라이언트 내부의 JNLP를 통해 매개 변수를 전달하려고합니다.

http://localhost:8080/MyJnlp.jnlp?login=14hhh765p&pass=ggyyktff 

지금 내 JNLP이 <application-desc name tag이 방법을 매개 변수를 얻기 위해 노력할 것입니다 :

자바 스크립트는 예를 들어,이 URL을 실행

<application-desc name="..." main-class="com.main.execute" > 
     <argument>-nosplash</argument> 
     <argument>-q</argument> 
    <argument><%=request.getParameter("login")%></argument> 
    <argument><%=request.getParameter("pass")%></argument> 
</application-desc> 

그러나 그것은 작동하지 않았다.

login=getParamsFromJnlp("login") 
.. 

public String getParamsFromJnlp(String key) { 
    return System.getProperty(key); 
} 

의 JNLP는 APACHE2.2

내부에 잘못 어떤 생각입니다 :

내 클라이언트 코드에서이 방법을 그 매개 변수를 검색 할 수 없습니다?

+0

속성. 나는 아파치 2.2에 대해 많이 모른다. 그러나 "-nosplash"와 "-q"인수에 어떻게 접근 하는가? –

+0

잘 작동합니다. 문제는 JNLP를 실행하는 쿼리 문자열에서 params를 가져 와서 내 클라이언트의 명령 줄 args에 전송하려는 것입니다. – rayman

+0

codebase 특성을 설정해야 할 수도 있습니다. 여기에 내 대답이 적용되는지 확인하십시오. http : // stackoverflow. com/questions/12861447/dynamically-create-response-in-jsf/12863398 # 12863398 –

답변

9

것은 당신이 어떤 HTTP-매개 변수를 알 때까지되지 않으므로은 .jnlp 파일이이 동적으로 요청 '구축'해야하는 응용 프로그램의 인수로 HTTP-매개 변수를 삽입 할 수 있으려면 그 사용하게 될 것이다.

java-web-start의 작동 방식은 .jnlp를 여러 번 다운로드하지만 처음에는 jnlp 요소의 codebase 및 href 속성에 지정된 URL에서 파일을 다운로드하는 것입니다.

그래서 그것은 요소에이 동적 인수 요소를 추가하는 것만으로는 충분하지 않습니다, 당신은 또한 코드베이스에 추가해야/HREF이 매개 변수는 기본 방법에 인수로 전달됩니다

<jnlp spec="1.0+" 
     codebase=<%=request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ request.getContextPath() + "/" %> 
     href="jnlpfile.jnlp&#063;username=<%=request.getParameter("username")%>&clienttoken=<%=request.getParameter("clienttoken")%>"> 

    ... 
    <application-desc main-class="test.MainClass"> 
     <argument><%=request.getParameter("username")%></argument> 
    </application-desc> 
</jnlp> 
+0

그리고 jsp 페이지가 필요없이이 작업을 수행 할 수 있습니까? – rayman

+0

시도했습니다. 그것과 나는 예외가있다 : BadFieldException [코드베이스에 유효하지 않은 값이있다 : <% = request.getScheme(), <% = request.getScheme()] – rayman

+0

아니요, 아직도 미안하지만, 당신이 원하는 일을하는 방법을 알고 동적으로 jnlp를 생성하는 것입니다 .JSP, PHP 또는 다른 동등한를 사용합니다. –

1

JSP의 응답 유형이 "application/x-java-jnlp-file"이라면 확실합니까?

그렇지 않은 경우 JSP 상단에서 언급하고 확인하십시오.

<% response.setContentType("application/x-java-jnlp-file"); %> 
+0

나는 그것을 얻지 않는다고 생각한다. 이 시나리오에서 JSP가 어디에서 발생합니까? 나는 main-class = "com.main.execute를 통해 이것을 실행하고있다. 그리고이 클래스에 곧바로 들어간다. – rayman

+0

그리고 어떤 응답에 대해 말하고 있는가? – rayman