Amazon Ads

2013年7月31日 星期三

[分享]cannot Deploy...Servlet web service endpoint '' failure

今天在練習WS,要部署到Glassfish時,Server丟出了下列的錯誤:
 
cannot Deploy JAX-WS_WebServiceProvider
deploy is failing=Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: Servlet web service endpoint '' failure. Please see server.log for more details.

拜歐用了紅色部份當關鍵字去Google找,得到的答案有在Webmethod中使用了type為interface的當做參數,但這不符合我的情況。

後來再仔細檢查一次後,發現有一個Class做了WebService的annotation,但沒有任何method,如:

package idv.jk;

import javax.jws.WebService;

@WebService()
public class Calculator {

}

把@WebService的annotation拿掉後,就好了。

2013年7月24日 星期三

【分享】使用Eclipse的TCP/IP monitor監控網路傳輸

使用TCP/IP monitor來監控網路傳輸,其實類似把Eclipse當做一個代理伺服器,送出一個request出去,會先由TCP/IP monitor接收,再送往目的地;同樣地,目的伺服器回傳一個response回來,也是會由TCP/IP monitor接收後,再回傳本地客戶端。

首先要開啟Eclipse的TCP/IP monitor,如下圖:


再找到「Debug」下的「TCP/IP Monitor」:


當TCP/IP MonitorTCP/IP的View出現時,點按右上方的小小三角形,再點選「Properties」,再點按「Add...」:


就會跑出New Monitor的小對話窗出來:



在上面的對窗裡的設置如下:

  1. 「Local monitoring port」是指你的機器要當用來監控的話,是要送到你機器的那個port,這裡的設定不能和你機器上執行的伺服器使用的port重覆
  2. 「Host name」是指你要監控的伺服器的host name,如現在咱要監控咱機器上的Tomcat(它的port設為8888),就在這裡設為localhost
  3. 「Port」是指你要監控的伺服器的port,如上例本機Tomcat的8888
  4. 「Type」就是你要監控的傳輸內容類型

詳細說明可以參考這裡。

設定完成後,可以看到你新增的Monitor,原始「Status」為「Stopped」,使用前記得點按右邊的「Start」鈕,讓他的狀態變成「Started」,若你local的port正被你機器上其他運作中的伺服器使用的話,他會報錯。


這裡要注意的是,因為這裡的「Local monitoring port」是設「6688」,所以呼叫伺服器的port,要改成「6688」,這樣送出的request才會先被TCP/IP Monitor接收到,如:


當送出上列的request後,切換到TCP/IP Monitor的View,就可以看到一堆訊息被記錄下來。


這個功能在開發Web Service等網路應用程式,可以提供不少有用的資訊。

2013年6月24日 星期一

[原來如此]Eclipse的小視窗Shared Area

自從下載Ecplise Juno之後,發現他有一個新功能,就是會出現下列大紅框中的區塊,今天才發現它叫「Shared Area」,要開關它,就點下圖中的小紅框就可以開關它。


2013年6月5日 星期三

[Eclipse]在Debug中,設定Hit Count

在Eclipse中做debug,可能會遇到一個情況是,在某一行程式被執行過幾次後,在那一行程式停著,讓開發人員再逐步執行,找出程式的問題。

這時,就可以使用Eclipse中Debug的「Hit count」功能,在使用此功能前,要先在要停的那一行程式設一個「中斷點」(breakpoint):

然後在該中斷點點按滑鼠右鍵,選擇「Breakpoint Properties...」,如下:

顯示對話視窗後,在「Hit count」中的輸入欄位裡,填入你要停止的的次數,例如,此例填入「5」,表示在這一個中斷點跑過四次後,第5次跑到這一個中斷點,就會停在這個中斷點。

以Debug模式執行,範例程式中的迴圈會直接跑過中斷點4次,在第5次執行到該中斷點時,才會停在那邊,則如下圖所示:

那若直接按繼續執行呢?
在此例程式中的迴圈會一次跑完,再也不會停在那個中斷點。



2013年5月27日 星期一

[分享]jspInit中發生java.lang.NullPointerException錯誤

在Tomcat中部署war檔後,開啟網頁,會出現下面錯誤:

HTTP Status 500 -


type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:538)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 ....SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
 ...
 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 ...
root cause
java.lang.NullPointerException
 ...._jspInit(Login_jsp.java:22)
 org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
 org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 ...
 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 ....
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.

主要原因是在專案中的WEB-INF/lib下,存在著jsp-api.jar,其版本和Tomcat的版本衝到,將其移除後,重新部署,問題即可解決。

2013年5月23日 星期四