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

问题描述 投票:1回答:4

我正在使用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

java exception glassfish
4个回答
3
投票

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

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

product catalog.Java

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

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

解:

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


2
投票

对我来说问题是,我错过了包含无参数构造函数或“Product”类。当我包含无参数构造函数时,它工作。

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


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

然后问题解决了..


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()等默认格式时,它已正确发布。

© www.soinside.com 2019 - 2024. All rights reserved.