簡體   English   中英

在Glassfish上部署Web應用程序時出錯

[英]Error when deploying web app on Glassfish

我正在使用Eclipse + Glassfish 4.0

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

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

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

這兩個方法不應具有相同的名稱:

ProductCatalog.java

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

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

解:

我將第一個方法的名稱更改為其他名稱,並像魅力一樣工作。

對我來說,問題是,我錯過了包含無參數構造函數或“ Product”類的問題。 當我包含no參數構造函數時,它起作用了。

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

我有這個問題, glassfish在Linux環境中。 檢查您的$JAVA_HOME ,應將其設置為jdk

export JAVA_HOME=/usr/java/jdk1.7.0_55

/opt/glassfish4/glassfish/bin # echo $JAVA_HOME

/usr/java/jdk1.7.0_55

然后問題解決了..

我對Eclipse galileo也有同樣的問題,並且可以確定它與我的休眠映射有關,因為當我使用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;
     }
}

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

因此,當我將現有的getter和setter更改為默認形式(如getIsActive()setIsActive() ,它已正確發布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM