Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jaxws和apache cxf以及glassfish 5错误:java.lang.IllegalStateException:生命周期方法[finalizeConfig]不能引发已检查的异常_Java_Soap_Glassfish_Jetty_Cxf - Fatal编程技术网

jaxws和apache cxf以及glassfish 5错误:java.lang.IllegalStateException:生命周期方法[finalizeConfig]不能引发已检查的异常

jaxws和apache cxf以及glassfish 5错误:java.lang.IllegalStateException:生命周期方法[finalizeConfig]不能引发已检查的异常,java,soap,glassfish,jetty,cxf,Java,Soap,Glassfish,Jetty,Cxf,我以前看到过,他们的解决方案并没有解决我的问题,因为GlassFish5有很多变化 我正在运行soap web服务,并出现以下错误: java.lang.IllegalStateException: The lifecycle method [finalizeConfig] must not throw a checked exception. Related annotation information: annotation [@javax.annotation.PostConstruct(

我以前看到过,他们的解决方案并没有解决我的问题,因为GlassFish5有很多变化

我正在运行soap web服务,并出现以下错误:

java.lang.IllegalStateException: The lifecycle method [finalizeConfig] must not throw a checked exception. Related annotation information: annotation [@javax.annotation.PostConstruct()] on annotated element [public void org.apache.cxf.transport.http_jetty.spring.JettyHTTPServerEngineBeanDefinitionParser$SpringJettyHTTPServerEngine.finalizeConfig() throws java.security.GeneralSecurityException,java.io.IOException] of type [METHOD]
    at com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:503)
    at com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:423)
    at org.glassfish.web.deployment.archivist.WebArchivist.postAnnotationProcess(WebArchivist.java:317)
    at org.glassfish.web.deployment.archivist.WebArchivist.postAnnotationProcess(WebArchivist.java:68)
    at com.sun.enterprise.deployment.archivist.Archivist.readRestDeploymentDescriptors(Archivist.java:397)
    at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:372)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:247)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:256)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:217)
    at com.sun.enterprise.deployment.archivist.ApplicationFactory.openArchive(ApplicationFactory.java:137)
    at org.glassfish.javaee.core.deployment.DolProvider.processDOL(DolProvider.java:183)
    at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:207)
    at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:73)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:857)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:797)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:354)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:195)
...
我使用的是Glassfish 5.1.0和ApacheCXF3.3.5,我的IDE是EclipseEE版本:2019-12(4.14.0)

我下载了ApacheCXF二进制发行版并添加到EclipseCXF运行时

这是我的web服务类:

package com.web.service;

import javax.jws.WebMethod; 
import javax.jws.WebService; 

@WebService(targetNamespace = "localhost:8080")
public class Service { 
    @WebMethod public String greet(String name) { 
        return "Hi," + name; 
    }
} 

org.apache.cxf.transport.http_jetty.spring包在部署到Glassfish时会导致问题。您需要将其从CXF二进制发行版中删除

请尝试以下步骤:

首先从Eclipse中的项目中删除原始二进制发行版。
然后,您需要使用一些存档工具打开二进制发行版(可能您正在使用的操作系统已经包含了一些内容),并导航到存档中的
lib
文件夹。删除文件
cxf rt transports http jetty-*.jar
。 然后将更改后的二进制发行版添加到项目中,就像之前使用原始二进制发行版一样

也许这已经足够了。如果没有,你可以尝试另一个步骤

它与您链接的解决方案大致相同。但是,我不确定Glassfish 5.1是否仍然接受
sunweb.xml
文件。现在应该将其命名为
glassfishweb.xml

因此,创建包含以下内容的文件
glassfishweb.xml

(如果您已经拥有该文件,只需将
行添加到其中)



将文件放入WAR文件的
WEB-INF
文件夹。

嗨,我已经格式化了你的代码。请查看“常规帮助”页面以了解下一个问题。请不要添加评论来澄清;注释中的代码不可读。非常感谢。我读了,但需要一点练习。谢谢。我照你说的做了,又犯了一个错误。java.lang.IllegalStateException:生命周期方法[finalizeConfig]不能引发已检查的异常。相关注释信息:注释[@javax.annotation.PostConstruct()]在[METHOD]类型的注释元素[public void org.apache.cxf.transport.http_undertow.spring.undertowhttpserverenginebeandDefinitionParser$SpringUndertowHTTPServerEngine.finalizeConfig()抛出java.security.GeneralSecurityException,java.io.IOException]请访问com.sun.enterprise.deployment.archivist.archivist.readAnnotations(archivist.java:503)…然后还请从二进制发行版中删除undertow传输。就像你在jetty transport上做的一样。有3个文件上有拖带。cxf-rt-transports-http-undertow-3.3.5.jar、undertow-core-2.0.28.Final.jar和undertow-servlet-2.0.28.Final.jar。我需要删除所有这些吗?你确定没出什么差错吗?干杯。交通工具用的应该够了。你会失去什么?;)删除文件后:java.lang.RuntimeException:wsdl文件classpath:/org/apache/cxf/ws/discovery/wsdl/wsdd-discovery-1.1-wsdl-os.wsdl不存在于com.sun.enterprise.deployment.util.ModuleContentValidator.accept(ModuleContentValidator.java:181)com.sun.enterprise.deployment.util.ModuleContentLinker.accept上的web服务发现com.sun.enterprise.deployment.BundleDescriptor.visit(BundleDescriptor.java:617)上的ModuleContentLinker.java:67,org.glassfish.web.deployment.descriptor.webbundleDescriptor.visit(webbundleDescriptor.java:2009)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
  <class-loader delegate="true"/>
</glassfish-web-app>