2014-03-26 79 views
1
部署Web應用程序時

我使用Eclipse + Glassfish的4.0錯誤Glassfish上

當我部署一個簡單的項目,會出現以下錯誤:

cannot Deploy Testmart 

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. 

編輯:

ProductCatalog.java類別:

import org.hamed.train.service.ProductServiceImp; 

@WebService 
public class ProductCatalog { 
    ProductServiceImp productService = new ProductServiceImp(); 
    @WebMethod 
    public List<String> getProducts() { 
     return productService.getProductCategories(); 
    } 
    public List<String> getProducts(String category) { 
     return productService.getProducts(category); 
    } 
} 

system.log內容: http://txs.io/B7P

+0

從'server.log'粘貼堆棧跟蹤 – AKS

+0

什麼是servlet代碼(尤其是'@WebServlet'註釋)和部署描述符? –

+0

我沒有在任何地方使用過@ @ WebServlet!我是不是該? –

回答

3

根據@Silly Freak的評論,我找到了答案。

這兩種方法不應該有相同的名字:

ProductCatalog.java

public List<String> getProducts() { 
     return productService.getProductCategories(); 
    } 

public List<String> getProducts(String category) { 
     return productService.getProducts(category); 
    } 

解決方案:

我改變了第一種方法的名稱到別的東西和工作就像一個魅力。

1

我有這個問題,glassfish是在Linux環境下。檢查你的$ JAVA_HOME應該在設置爲JDK

出口JAVA_HOME =的/ usr/JAVA/jdk1.7.0_55

的/ opt/glassfish4/GlassFish的/ bin中#回聲$ JAVA_HOME

在/ usr /的Java/jdk1.7.0_55

然後問題解決了..

2

對我來說,問題是,我錯過了包括無參數的構造函數或「產品」類。它在我包含無參數構造函數時起作用。

注意:JAXB不需要參數構造函數來實例化對象。

0

我也有eclipse galileo的問題,並且我確定它與我的hibernate映射有關,因爲當我使用HBM文件對錶進行新映射時,發佈過程開始失敗,映射是正確的在HBM文件中,但問題出在我的DAO類。我的DAO類的

示例代碼: -

public class MyDAO 
{ 
    private int id; 
    private int name; 
    private boolean isActive; 

    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public boolean isActive() { 
     return isActive; 
    } 
    public void setActive(boolean isActive) { 
     this.isActive = isActive; 
    } 
} 

你可以看到布爾變量的getter和setter方法是從其他兩個變量(所有的getter和setter方法是由Eclipse本身開發的)不同。現在從框架的角度來看,它將採用一個屬性名稱,將其第一個字符改爲大寫,並附加一個get或set作爲前綴來調用該屬性的getter和setter。所以在布爾屬性的情況下,它會出錯。

因此,當我將現有的獲取者和設置者更改爲默認形式,如getIsActive()setIsActive()時,它已正確發佈。