您好,登錄后才能下訂單哦!
這篇文章主要介紹“java webstart問題怎么解決”,在日常操作中,相信很多人在java webstart問題怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java webstart問題怎么解決”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
當時碰到的幾個技術問題是:
1.從web傳遞相關的參數給application,
解決辦法:用動態jnlp文件(jsp實現jnlp),同時用到如下傳參辦法
application-desc
ElementThe 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 themain
class.Arguments can be specified to the application by including one or more nested argument elements. For example:
<application-desc main-class="Main">
<argument>arg1argument>
<argument>arg2argument>
application-desc>
2.如何將application處理的結果傳回給web server
解決辦法,用URLConnection結合從jnlp中傳來的web url (為一個后臺處理的servlet地址),sessionID(用于識別當前用戶,權限等判斷)去創建一個新的url對象,并通過它在application和web server之間傳遞數據。在后臺的servlet中通過sessionid,從session listener中找到當前用戶,
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();
// read input from servlet
dis =
new ObjectInputStream(urlConn.getInputStream());
String ret = dis.readObject().toString();
dis.close();
return ret;
} catch (Exception e) {
throw e;
} finally{
if ( dos!=null) dos.close();
if ( dis!=null) dis.close();
}
}
后臺sevlet:
public void doGet(HttpServletRequest request, HttpServletResponse response)
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 class SessionsListener
implements ServletContextListener, HttpSessionListener
{
static Map map = new HashMap();
public SessionsListener()
{
}
public void contextInitialized(ServletContextEvent servletcontextevent)
{
}
public void contextDestroyed(ServletContextEvent servletcontextevent)
{
}
public void sessionCreated(HttpSessionEvent httpsessionevent)
{
HttpSession httpsession = httpsessionevent.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 cache問題即:JNLP file caching
http://forum.java.sun.com/thread.jspa?forumID=38&threadID=556847
(1)
If you remove the href= parameter from the jnlp tag, Java Web Start 1.4.2 will not cache the jnlp file.
1.5.0 still will, but if you also remove the
(2)
It seems the issue is with generated JNLP files.
Try the following:
response.addDateHeader("Date", Calendar.getInstance().getTime().getTime());
response.addDateHeader("Last-Modified", Calendar.getInstance().getTime().getTime());
Seems to have solved the problem for us.
到此,關于“java webstart問題怎么解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。