>Java >java지도 시간 >Java webstart 문제를 해결하는 방법

Java webstart 문제를 해결하는 방법

王林
王林앞으로
2023-05-16 19:07:041215검색

당시 발생한 몇 가지 기술적 문제는 다음과 같습니다.

1. 웹에서 애플리케이션으로 관련 매개변수를 전달합니다.

해결 방법: 동적 jnlp 파일(jnlp 구현을 위해 jsp)을 사용하고 다음 매개변수 전달 방법을 사용합니다.

application-desc 요소

application-desc Element

The application element indicates that the JNLP file is launching an application (as opposed to an applet). The application element has an optional attribute, main-class, which can be used to specify the name of the application's main class, i.e., the class that contains the public static void main(String argv[]) method where execution must begin.

The main-class attribute can be omitted if the first JAR file specified in the JNLP file contains a manifest file containing the main

application

요소는 JNLP 파일이 애플리케이션(애플릿과 반대)을 시작함을 나타냅니다. 애플리케이션 요소에는 main-라는 선택적 속성이 있습니다. class는 애플리케이션의 메인 클래스 이름을 지정하는 데 사용할 수 있습니다. 즉, 실행이 시작되어야 하는

public static void main(String argv[])

메소드를 포함하는 클래스입니다.main- JNLP 파일에 지정된 첫 번째 JAR 파일에 <code>main 클래스가 포함된 매니페스트 파일이 포함된 경우 class 속성을 ​​생략할 수 있습니다.인수는 하나 이상의 중첩된 항목을 포함하여 애플리케이션에 지정할 수 있습니다.
argument 요소 >arg2argument> ;
application-desc>2. 애플리케이션 처리 결과를 웹 서버로 다시 보내는 방법
해결 방법은 URLConnection을 사용하여 전달된 웹 URL을 결합하는 것입니다. jnlp(백그라운드 처리 서블릿 주소), sessionID(현재 사용자, 권한 등을 식별하는 데 사용)를 사용하여 새 URL 객체를 생성하고 이를 통해 애플리케이션과 웹 서버 간에 데이터를 전달합니다. 백그라운드 서블릿에서 sessionid를 통해 세션 리스너에서 현재 사용자를 찾습니다.

 private String getStringPostRequest(String command) throws Exception {
DataOutputStream dos=null;

ObjectInputStream dis=null;

try {

URLConnection urlConn = new URL ( webServerStr).openConnection();

urlConn.setDoOutput(true);

urlConn.setDoInput(true);
urlConn.setAllowUserInteraction(false);
urlConn.setUseCaches(false);
urlConn.setRequestProperty(
"Content-Type " ,
"application/x-www-form-urlencoded");

dos = new DataOutputStream(urlConn.getOutputStream());
dos.writeBytes(command + "&sessionId=" + this.sessionId);
dos. close ();
// servlet에서 입력 읽기
dis =

new ObjectInputStream(urlConn.getInputStream());

String ret = dis.readObject().toString();
dis.close();
return ret;
} catch (예외 e) {
throw e;
} 마침내{
if ( dos!=null) dos.close();
if ( dis!=null) dis.close();
}
}

백엔드 servlet:

public void doGet(HttpServletRequest 요청, HttpServletResponse 응답)
throws IOException, ServletException
{

HttpSession hSession = request.getSession();

System.out.println("Application:" + hSession.getId()) ;

if(MyListener.getSessionById(request.getParameter("sessionId")) != null)

hSession = MyListener.getSessionById(request.getParameter("sessionId"));
System.out.println("OK" + hSession ) ;

.............}

sessionlistener:

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletContextEvent;

import javax . Servlet.servletContextListener;

import javax.servlet.http.*;

Public 클래스 sessionLisions
구현 서비스, httpsessionListener
{ static map map = new hashmap ();

Public sessionSlistener () public void contextInitialized(Servletcontextevent)

}

public void contextDestroyed(ServletContextEvent servletcontextevent)

{

}

public void sessionCreated(HttpSessionEvent httpsessionevent)
{
HttpSession httpsession = httpsession event.getSession();

map.put( httpsession.getId(), httpsession) ;

}

public void sessionDestroyed(HttpSessionEvent httpsessionevent)

{

HttpSession httpsession = httpsessionevent.getSession();
map.remove(httpsession.getId());
}

public static HttpSession getSessionById(String s)
{
return (HttpSession)map.get(s);
}

}


3.jar 패키지 디지털 서명 문제

4.java webstart 캐시 문제: JNLP 파일 캐싱

http://forum.java.sun. com/thread.jspa?forumID=38&threadID=556847


(1)

jnlp 태그에서 href= 매개변수를 제거하면 Java Web Start 1.4.2는 jnlp 파일을 캐시하지 않습니다.

1.5.0은 여전히 ​​캐시합니다. 하지만

(2)

생성된 JNLP 파일에 문제가 있는 것 같습니다.

다음을 시도해 보세요.

response.addDateHeader("Date", Calendar.getInstance().getTime().getTime ());

response.addDateHeader("Last-Modified", Calendar.getInstance().getTime().getTime());

문제가 해결된 것 같습니다

위 내용은 Java webstart 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제