从GlassFish迁移到Tom EE Microprofile

我已经将我在GlassFish上开发的Web应用程序部署到Tom EE micro-profile(对于那些想知道为什么这是我的大学项目的限制之一。)

这就是陷阱。从GlassFish迁移到Tom EE需要一些更改,有些是我确实期望的,而有些则没有。

在我没有提到的问题中,有Apache-CXF与JAX-RS的冲突。您会看到,我的REST服务是使用本机JAX-RS API开发的,但是由于某些原因,当它部署在Tom EE上时会产生问题。

它会更具体地产生以下错误:

org.apache.openejb.server.cxf.rs.CxfRsHttpListener.providers Can't use CDI to create provider org.apache.geronimo.microprofile.openapi.jaxrs.OpenAPIFilter java.util.logging.ErrorManager: 5 java.lang.NullPointerException at java.util.PropertyResourceBundle.handleGetObject(PropertyResourceBundle.java:166) at java.util.ResourceBundle.getObject(ResourceBundle.java:441) at java.util.ResourceBundle.getString(ResourceBundle.java:407) at java.util.logging.Formatter.formatMessage(Formatter.java:118) at org.apache.juli.OneLineFormatter.format(OneLineFormatter.java:141) at org.apache.juli.FileHandler.publish(FileHandler.java:294) at org.apache.juli.AsyncfileHandler.publishInternal(AsyncfileHandler.java:146) at org.apache.juli.AsyncfileHandler$LogEntry.flush(AsyncfileHandler.java:185) at org.apache.juli.AsyncfileHandler$Loggerthread.run(AsyncfileHandler.java:161) java.util.logging.ErrorManager: 5 java.lang.NullPointerException at java.util.PropertyResourceBundle.handleGetObject(PropertyResourceBundle.java:166) at java.util.ResourceBundle.getObject(ResourceBundle.java:441) at java.util.ResourceBundle.getString(ResourceBundle.java:407) at java.util.logging.Formatter.formatMessage(Formatter.java:118) at org.apache.juli.OneLineFormatter.format(OneLineFormatter.java:141) at java.util.logging.StreamHandler.publish(StreamHandler.java:211) at java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:116) at org.apache.tomee.jul.formatter.AsyncConsoleHandler.publishInternal(AsyncConsoleHandler.java:37) at org.apache.juli.AsyncfileHandler$LogEntry.flush(AsyncfileHandler.java:185) at org.apache.juli.AsyncfileHandler$Loggerthread.run(AsyncfileHandler.java:161) 22-Nov-2019 10:16:14.131 GRAVE [main] org.apache.cxf.jaxrs.utils.InjectionUtils.reportServerError Method setapplication can not be accessed due to security manager restrictions 22-Nov-2019 10:16:14.146 GRAVE [main] org.apache.openejb.observer.ObserverManager$Methodinvocation.invoke error invoking org.apache.tomee.webservices.TomeeJaxRsService@48e4374 org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:216) at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication(CxfRsHttpListener.java:701) at org.apache.openejb.server.rest.RESTService.deployApplication(RESTService.java:489) at org.apache.openejb.server.rest.RESTService.afterApplicationCreated(RESTService.java:254) at org.apache.tomee.webservices.TomeeJaxRsService.afterApplicationCreated(TomeeJaxRsService.java:53) at sun.reflect.NativeMethodaccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodaccessorImpl.invoke(NativeMethodaccessorImpl.java:62) at sun.reflect.DelegatingMethodaccessorImpl.invoke(DelegatingMethodaccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.openejb.observer.ObserverManager$Methodinvocation.invoke(ObserverManager.java:402) at org.apache.openejb.observer.ObserverManager$BeforeAndAfterinvocationSet.invoke(ObserverManager.java:499) at org.apache.openejb.observer.ObserverManager.doFire(ObserverManager.java:111) at org.apache.openejb.observer.ObserverManager.fireEvent(ObserverManager.java:100) at org.apache.openejb.loader.SystemInstance.fireEvent(SystemInstance.java:133) at org.apache.tomee.catalina.TomcatWebAppBuilder.afterStart(TomcatWebAppBuilder.java:1783) at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:193) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:978) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1849) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.Futuretask.run(Futuretask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:773) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1576) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) at java.util.concurrent.Futuretask.run(Futuretask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:932) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.startup.Catalina.start(Catalina.java:633) at sun.reflect.NativeMethodaccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodaccessorImpl.invoke(NativeMethodaccessorImpl.java:62) at sun.reflect.DelegatingMethodaccessorImpl.invoke(DelegatingMethodaccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:344) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475) Caused by: javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error at org.apache.cxf.jaxrs.utils.SpecExceptions.toInternalServerErrorException(SpecExceptions.java:79) at org.apache.cxf.jaxrs.utils.ExceptionUtils.toInternalServerErrorException(ExceptionUtils.java:111) at org.apache.cxf.jaxrs.utils.InjectionUtils.reportServerError(InjectionUtils.java:573) at org.apache.cxf.jaxrs.utils.InjectionUtils.reportServerError(InjectionUtils.java:559) at org.apache.cxf.jaxrs.utils.InjectionUtils.injectThroughMethod(InjectionUtils.java:393) at org.apache.cxf.jaxrs.utils.InjectionUtils.injectThroughMethod(InjectionUtils.java:374) at org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxiesAndApplication(InjectionUtils.java:1197) at org.apache.cxf.jaxrs.provider.ProviderFactory.injectContextProxiesIntoProvider(ProviderFactory.java:719) at org.apache.cxf.jaxrs.provider.ServerProviderFactory.injectContextProxiesIntoProvider(ServerProviderFactory.java:310) at org.apache.cxf.jaxrs.provider.ProviderFactory.injectContextProxies(ProviderFactory.java:708) at org.apache.cxf.jaxrs.provider.ServerProviderFactory.setProviders(ServerProviderFactory.java:275) at org.apache.cxf.jaxrs.provider.ProviderFactory.setUserProviders(ProviderFactory.java:853) at org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.setupFactory(AbstractJAXRSFactoryBean.java:332) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setupFactory(JAXRSServerFactoryBean.java:234) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:179) ... 56 more

我不明白为什么。如果整个Java EE理念都很容易部署,那么为什么不普遍使用RESTful Services API。我已经将Apache-CXF添加到我的pom.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>m1se</groupId>
    <artifactId>appv3</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>

    <name>appv3</name>

    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client-->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf</artifactId>
            <version>3.3.3</version>

        </dependency>
        <dependency>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.19.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-json-->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-json</artifactId>
            <version>1.19.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-bundle -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-bundle</artifactId>
            <version>1.19.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.17.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.17.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-servlet</artifactId>
            <version>1.17.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.0.pr3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.jaxrs</groupId>
            <artifactId>jackson-jaxrs-json-provider</artifactId>
            <version>2.10.0.pr2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-jaxb-annotations</artifactId>
            <version>2.10.0.pr3</version>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-jaxb-annotations</artifactId>
            <version>2.10.0.pr3</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.5.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
            <version>2.5.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <failOnmissingWebXml>false</failOnmissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>7.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

(一次),我希望这是重复的,解决方案隐藏在深the的互联网中。有关信息,我的GlassFish为4.1.1,我的Tom EE micro-profile为8。

更具体地说,此错误非常令人困惑:org.apache.openejb.server.cxf.rs.CxfRsHttpListener.isCXFResource No JAX-RS Service

我正在使用Windows Server2016。

预先感谢

票价

goldgrass 回答:从GlassFish迁移到Tom EE Microprofile

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3051894.html

大家都在问