Glassfish 4.0 加载应用程序时出现异常,java.lang.IllegalStateException

Posted

技术标签:

【中文标题】Glassfish 4.0 加载应用程序时出现异常,java.lang.IllegalStateException【英文标题】:Glassfish 4.0 Exception while loading the app, java.lang.IllegalStateException 【发布时间】:2014-05-01 17:29:48 【问题描述】:

我是 Web 服务和 glassfish 的新手。这是我的代码

package ws.mypkg;

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style=Style.RPC)
public class TestRPC 

    // This seems to cause the problem when a List is returned.
    public List<String> testRPC () 
        List<String> l = new ArrayList<String>();
        l.add("Hello");
        return l;
    

    // This method work fine
    public String testRPC1 () 
        return "Testing RPC";
    

如果我有

@SOAPBinding(style=Style.RPC)

我在尝试部署 Web 服务时收到以下错误。

无法部署 TestGF 部署失败=部署期间发生错误:异常 加载应用程序时:java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException:java.lang.RuntimeException:Servlet Web 服务 端点''失败。有关详细信息,请参阅 server.log。

服务器日志没有更多内容。

当我注释掉@SOAPBinding(style=Style.RPC)时,它部署得很好

问题似乎出在第一种方法上。如果我排除第一种方法,则第二种方法可以正常部署。当我从该方法返回一个列表并且我有 @SOAPBinding(style=Style.RPC)

时,似乎我遇到了这个问题

我正在使用 Glassfish 4.0、jdk 1.7 和 Eclipse(与 Spring 3.4 捆绑在一起)

【问题讨论】:

【参考方案1】:

问题是您的方法返回类型是一个接口,而JAXB 不能与接口一起使用,因为它不知道要使用哪个List 实现。

要修复它,只需将方法的返回类型更改为 ArrayList,如下所示:

public ArrayList<String> testRPC () 
    ArrayList<String> l = new ArrayList<String>();
    l.add("Hello");
    return l;

正如错误消息所示,更多信息可以在server.log 中找到。应该是这样的:

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.util.List is an interface, and JAXB can't handle interfaces
    this problem is related to the following location:
        at java.util.List

如果发生类似错误,这应该为您指明正确的方向。

另请参阅:

java.util.List is an interface, and JAXB can't handle interfaces

【讨论】:

谢谢。我将列表更改为 ArrayList。它部署正常。但是当我运行时,响应似乎返回一个空对象。所有我看到的。但是,如果我去掉 RPC 样式,我会看到列表返回为 Hello

以上是关于Glassfish 4.0 加载应用程序时出现异常,java.lang.IllegalStateException的主要内容,如果未能解决你的问题,请参考以下文章

Glassfish RAR5035:从池中销毁资源时出现意外异常

将 EJB Jar 部署到 Glassfish 时出现异常

部署.war文件时会出现glassfish异常

EF4 Code First & SQLCE 4.0 - 生成数据库时出现异常

在本地主机上的 glassfish 4.0 上实现 ssl

将应用程序部署到 GlassFish Server 时出现问题 - 映射问题?