我以前看到过这个和其他类似的问题,他们的解决方案并没有解决我的问题,因为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;
}
}
1条答案
按热度按时间jei2mxaa1#
这个
org.apache.cxf.transport.http_jetty.spring
当部署到glassfish时,包会导致问题。您需要将其从cxf二进制发行版中删除。请尝试以下步骤:
首先从eclipse中的项目中删除原始的二进制发行版。
然后,您需要使用一些归档工具(可能您使用的操作系统已经包含一些内容)打开二进制发行版,并导航到
lib
存档中的文件夹。删除文件cxf-rt-transports-http-jetty-*.jar
. 然后将更改后的二进制分布添加到您的项目中,就像您以前使用原始二进制分布时所做的那样。也许这已经足够了。如果没有,还有一步你可以尝试。
它或多或少与您已链接的解决方案相同。但是,我不确定glassfish5.1是否仍然接受
sun-web.xml
文件。它应该被命名为glassfish-web.xml
现在。所以创建文件
glassfish-web.xml
包括以下内容:(如果您已经有了该文件,只需添加
<class-loader delegate="true"/>
(与之连接)把文件放进
WEB-INF
war文件的文件夹。