jaxws и apache cxf и glassfi sh 5 ошибка: java .lang.IllegalStateException: метод жизненного цикла [finalizeConfig] не должен вызывать проверенное исключение - PullRequest
2 голосов
/ 24 января 2020

Я видел этот и другие подобные вопросы раньше, и их решение не решило мою проблему, потому что в Glassfi sh 5 было много изменений.

Я запускаю * Веб-служба 1015 * и получаю эту ошибку:

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)
...

Я использую Glassfi sh 5.1.0 и использую Apache cxf 3.3.5, и моя IDE - Eclipse EE Версия: 2019-12 ( 4.14.0)

Я скачал Apache двоичный дистрибутив CXF и добавил в eclipse CXF runtime.

Это мой класс веб-сервиса:

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 Ответ

0 голосов
/ 25 января 2020

Пакет org.apache.cxf.transport.http_jetty.spring вызывает проблемы при развертывании в Glassfi sh. Вам необходимо удалить это из двоичного дистрибутива CXF.

Пожалуйста, попробуйте выполнить следующие шаги:

Сначала удалите исходный двоичный дистрибутив из вашего проекта в Eclipse.
Затем вам нужно открыть бинарный дистрибутив с некоторым архивным инструментом (возможно, используемая вами операционная система уже содержит что-то) и перейдите в папку lib в архиве. Удалить файл cxf-rt-transports-http-jetty-*.jar. Затем добавьте измененный бинарный дистрибутив в ваш проект, как вы делали это ранее с оригинальным бинарным дистрибутивом.

Возможно, этого уже будет достаточно. Если нет, есть еще один шаг, который вы можете попробовать.

Это более или менее то же решение, которое вы уже связали. Однако я не уверен, что Glassfi sh 5.1 все еще примет файл sun-web.xml. В настоящее время он должен называться glassfish-web.xml.

Поэтому создайте файл glassfish-web.xml со следующим содержимым:
(если у вас уже есть этот файл, добавьте к нему только строку <class-loader delegate="true"/>)

<?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>

Поместите файл в папку WEB-INF вашего WAR-файла.

...