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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Glassfish上部署Web应用程序时出错相关的知识,希望对你有一定的参考价值。

我正在使用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的评论,我找到了答案。

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

product catalog.Java

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

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

解:

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

另一答案

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

注意: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相同的问题,我确信它与我的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()等默认格式时,它已正确发布。

以上是关于在Glassfish上部署Web应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Netbeans IDE 在 glassfish 的特定端口上部署 Web 应用程序?

在Glassfish 5.0中部署ADF WEbapp时出错

如何在GlassFish上部署基于JDO的EAR文件?

当使用Eclipse在Glassfish上重命名和部署动态Web项目的名称时,获取HTTP状态404 - 未找到

使用 deploy 命令在 glassfish 上部署 maven 项目

在GlassFish 3上为Web应用程序禁用CDI