在Glassfish上部署Web应用程序时出错

时间:2014-03-26 08:58:14

标签: java exception 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

4 个答案:

答案 0 :(得分:3)

根据@Silly Freak的评论,我找到了答案。

这两种方法不应该具有相同的名称:

<强> ProductCatalog.java

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

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

<强>解决方案:

我将第一个方法名称更改为其他名称并且像魅力一样工作。

答案 1 :(得分:2)

对我来说问题是,我错过了包含无参数构造函数或&#34; Product&#34;类。它包含了无参数构造函数。

注意:JAXB不需要arg构造函数来实例化对象。

答案 2 :(得分:1)

我遇到了这个问题, 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

然后问题解决了..

答案 3 :(得分: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。所以在布尔属性的情况下,它会出错。

因此,当我将现有的getter和setter更改为getIsActive()setIsActive()等默认表单时,它已正确发布。