我有一個Maven RESTful Web服務應用程序(帶有JAX-RS支持)。當我在Tomcat v7.0服務器上運行它時,我的API可以正常工作。但是,當我在用於Bluemix的WebSphere Liberty服務器上部署相同項目時出現錯誤。WebSphere Liberty Server(IBM Bluemix) - 在服務器上運行RESTful Web服務時出錯
當我部署應用程序時,它加載沒有問題。我也可以打開index.jsp頁面。它甚至完全運行一些API請求調用(通常是不採取任何輸入,不產生輸出請求。然而,對於某些API的請求,它顯示了這個錯誤:
Launching defaultServer (WebSphere Application Server 8.5.5.9/wlp-1.0.12.cl50920160227-1523) on Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_60-b27 (en_US)
[AUDIT ] CWWKE0001I: The server defaultServer has been launched.
[AUDIT ] CWWKE0100I: This product is licensed for development, and limited production use. The full license terms can be viewed here: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/8.5.5.9/lafiles/en.html
[AUDIT ] CWWKZ0058I: Monitoring dropins for applications.
[AUDIT ] CWWKI0001I: The CORBA name server is now available at corbaloc:iiop:localhost:2809/NameService.
[AUDIT ] CWWKT0016I: Web application available (default_host): http://localhost:9080/congEst/
[AUDIT ] CWWKZ0001I: Application congEst started in 11.912 seconds.
[AUDIT ] CWWKF0012I: The server installed the following features: [servlet-3.1, beanValidation-1.1, ssl-1.0, jndi-1.0, jca-1.7, ejbPersistentTimer-3.2, appSecurity-2.0, j2eeManagement-1.1, jdbc-4.1, wasJmsServer-1.0, jaxrs-2.0, javaMail-1.5, cdi-1.2, webProfile-7.0, jcaInboundSecurity-1.0, jpa-2.1, jsp-2.3, ejbLite-3.2, managedBeans-1.0, jsf-2.2, ejbHome-3.2, jaxws-2.2, localConnector-1.0, jsonp-1.0, el-3.0, jaxrsClient-2.0, concurrent-1.0, appClientSupport-1.0, ejbRemote-3.2, javaee-7.0, jaxb-2.2, mdb-3.2, jacc-1.5, batch-1.0, ejb-3.2, json-1.0, jaspic-1.1, distributedMap-1.0, websocket-1.1, wasJmsSecurity-1.0, wasJmsClient-2.0].
[AUDIT ] CWWKF0011I: The server defaultServer is ready to run a smarter planet.
[ERROR ] SRVE0777E: Exception thrown by application class 'org.glassfish.jersey.servlet.WebComponent.service:419'
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
org/eclipse/persistence/jaxb/compiler/Generator.generateSchemaFiles(Ljava/lang/String;Ljava/util/Map;)Ljava/util/HashMap; @90: invokevirtual
Reason:
Type 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject' (current frame, stack[0]) is not assignable to 'org/eclipse/persistence/core/sessions/CoreProject'
Current Frame:
bci: @90
flags: { }
locals: { 'org/eclipse/persistence/jaxb/compiler/Generator', 'java/lang/String', 'java/util/Map', 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject', 'org/eclipse/ persistence/oxm/XMLContext', 'org/eclipse/persistence/oxm/XMLMarshaller' }
stack: { 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject', 'java/lang/Class' }
Bytecode:
0x0000000: 2a2c 2ab4 015a b701 862a b401 5c2a b401
0x0000010: 5ab6 0175 2ab4 015a b601 792a b401 5ab6
0x0000020: 017b 2ab4 015a b601 782a b401 5ab6 0176
0x0000030: 2ab4 015a b601 7db6 018d 57bb 00b2 59b7
0x0000040: 016b 4ebb 00be 592d c000 c0b7 0195 3a04
0x0000050: 1904 b601 943a 052d 1202 b601 6ac0 00b1
0x0000060: 3a06 2ab4 015c b601 8a3a 0719 07b9 0198
0x0000070: 0100 3a09 a700 5e19 09b9 019a 0100 c000
0x0000080: 023a 08bb 009c 59bb 00a5 592b b801 62b7
0x0000090: 0164 1201 b601 6519 08b6 016d b601 65b6
0x00000a0: 0163 b701 5e3a 0a19 08b6 0170 3a0b 190b
0x00000b0: 1300 9913 0098 b601 9319 0619 0bb9 01a2
0x00000c0: 0200 1905 1908 bb00 9e59 190a b701 5fb6
0x00000d0: 0196 1909 b901 9901 009a ff9e 2ab4 015c
0x00000e0: b601 8bb0
Stackmap Table:
full_frame(@119,{Object[#182],Object[#164],Object[#170],Object[#176],Object[#190],Object[#191],Object[#177],Object[#167],Top,Object[#169]},{})
same_frame_extended(@210)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:419)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290)
at [internal classes]
Caused by: org.glassfish.jersey.server.ContainerException: java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
org/eclipse/persistence/jaxb/compiler/Generator.generateSchemaFiles(Ljava/lang/String;Ljava/util/Map;)Ljava/util/HashMap; @90: invokevirtual
Reason:
Type 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject' (current frame, stack[0]) is not assignable to 'org/eclipse/persistence/core/sessions/CoreProject'
Current Frame:
bci: @90
flags: { }
locals: { 'org/eclipse/persistence/jaxb/compiler/Generator', 'java/lang/String', 'java/util/Map', 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject', 'org/eclipse/ persistence/oxm/XMLContext', 'org/eclipse/persistence/oxm/XMLMarshaller' }
stack: { 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject', 'java/lang/Class' }
Bytecode:
0x0000000: 2a2c 2ab4 015a b701 862a b401 5c2a b401
0x0000010: 5ab6 0175 2ab4 015a b601 792a b401 5ab6
0x0000020: 017b 2ab4 015a b601 782a b401 5ab6 0176
0x0000030: 2ab4 015a b601 7db6 018d 57bb 00b2 59b7
0x0000040: 016b 4ebb 00be 592d c000 c0b7 0195 3a04
0x0000050: 1904 b601 943a 052d 1202 b601 6ac0 00b1
0x0000060: 3a06 2ab4 015c b601 8a3a 0719 07b9 0198
0x0000070: 0100 3a09 a700 5e19 09b9 019a 0100 c000
0x0000080: 023a 08bb 009c 59bb 00a5 592b b801 62b7
0x0000090: 0164 1201 b601 6519 08b6 016d b601 65b6
0x00000a0: 0163 b701 5e3a 0a19 08b6 0170 3a0b 190b
0x00000b0: 1300 9913 0098 b601 9319 0619 0bb9 01a2
0x00000c0: 0200 1905 1908 bb00 9e59 190a b701 5fb6
0x00000d0: 0196 1909 b901 9901 009a ff9e 2ab4 015c
0x00000e0: b601 8bb0
Stackmap Table:
full_frame(@119,{Object[#182],Object[#164],Object[#170],Object[#176],Object[#190],Object[#191],Object[#177],Object[#167],Top,Object[#169]},{})
same_frame_extended(@210)
at org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:256)
at org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:238)
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:480)
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:311)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:286)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1072)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:399)
... 5 more
Caused by: java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
org/eclipse/persistence/jaxb/compiler/Generator.generateSchemaFiles(Ljava/lang/String;Ljava/util/Map;)Ljava/util/HashMap; @90: invokevirtual
Reason:
Type 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject' (current frame, stack[0]) is not assignable to 'org/eclipse/persistence/core/sessions/CoreProject'
Current Frame:
bci: @90
flags: { }
locals: { 'org/eclipse/persistence/jaxb/compiler/Generator', 'java/lang/String', 'java/util/Map', 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject', 'org/eclipse/ persistence/oxm/XMLContext', 'org/eclipse/persistence/oxm/XMLMarshaller' }
stack: { 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject', 'java/lang/Class' }
Bytecode:
0x0000000: 2a2c 2ab4 015a b701 862a b401 5c2a b401
0x0000010: 5ab6 0175 2ab4 015a b601 792a b401 5ab6
0x0000020: 017b 2ab4 015a b601 782a b401 5ab6 0176
0x0000030: 2ab4 015a b601 7db6 018d 57bb 00b2 59b7
0x0000040: 016b 4ebb 00be 592d c000 c0b7 0195 3a04
0x0000050: 1904 b601 943a 052d 1202 b601 6ac0 00b1
0x0000060: 3a06 2ab4 015c b601 8a3a 0719 07b9 0198
0x0000070: 0100 3a09 a700 5e19 09b9 019a 0100 c000
0x0000080: 023a 08bb 009c 59bb 00a5 592b b801 62b7
0x0000090: 0164 1201 b601 6519 08b6 016d b601 65b6
0x00000a0: 0163 b701 5e3a 0a19 08b6 0170 3a0b 190b
0x00000b0: 1300 9913 0098 b601 9319 0619 0bb9 01a2
0x00000c0: 0200 1905 1908 bb00 9e59 190a b701 5fb6
0x00000d0: 0196 1909 b901 9901 009a ff9e 2ab4 015c
0x00000e0: b601 8bb0
Stackmap Table:
full_frame(@119,{Object[#182],Object[#164],Object[#170],Object[#176],Object[#190],Object[#191],Object[#177],Object[#167],Top,Object[#169]},{})
same_frame_extended(@210)
at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1017)
at org.eclipse.persistence.jaxb.JAXBContext.<init>(JAXBContext.java:174)
at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:165)
at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:152)
at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:112)
at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:102)
at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.getJAXBContext(MOXyJsonProvider.java:302)
at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.readFrom(MOXyJsonProvider.java:557)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:259)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:235)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:155)
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundReadFrom(MappableExceptionWrapperInterceptor.java:74)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:155)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1075)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:853)
at org.glassfish.jersey.server.ContainerRequest.readEntity(ContainerRequest.java:270)
at org.glassfish.jersey.server.internal.inject.EntityParamValueFactoryProvider$EntityValueFactory.provide(EntityParamValueFactoryProvider.java:96)
at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getParameterValues(ParameterValueHelper.java:81)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$AbstractMethodParamInvoker.getParamValues(JavaResourceMethodDispatcherProvider.java:125)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:203)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:97)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:303)
... 14 more
...
...
...
我想不通這個問題我在Google搜索瞭解,如果編譯時環境與運行時環境不同,可能會發生這個問題(VerifyError),但是我不知道它是什麼,但是我不知道它是怎麼回事
這是我的pom.xml
文件:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>vanet</groupId>
<artifactId>congEst</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>congEst</name>
<build>
<finalName>congEst</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<inherited>true</inherited>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- <artifactId>jersey-container-servlet</artifactId> -->
</dependency>
<!-- uncomment this to get JSON support -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jfuzzylogic</groupId>
<artifactId>jFuzzyLogic</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<properties>
<jersey.version>2.16</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
此文件i我的web.xml
文件。如果我想刪除球衣實施,我應該在這個文件中替換什麼?
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>vanet.congEst</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
</web-app>
UPDATE
我已經做了如下改變,我仍然得到一個錯誤。
-web.xml:
<servlet>
<servlet-name>JAX-RS Servlet</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.core.Application</param-name>
<param-value>vanet.congEst</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS Servlet</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
-pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>vanet</groupId>
<artifactId>congEst</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>congEst</name>
<build>
<finalName>congEst</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<inherited>true</inherited>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jfuzzylogic</groupId>
<artifactId>jFuzzyLogic</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.ibm.websphere.appserver.api</groupId>
<artifactId>com.ibm.websphere.appserver.api.jaxrs</artifactId>
<version>1.0.10</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
</properties>
</project>
但我得到這個錯誤做出API請求時。 我的錯誤在哪裏?
[AUDIT ] CWWKF0012I: The server installed the following features: [servlet-3.1, beanValidation-1.1, ssl-1.0, jndi-1.0, jca-1.7, ejbPersistentTimer-3.2, appSecurity-2.0, j2eeManagement-1.1, jdbc-4.1, wasJmsServer-1.0, jaxrs-2.0, javaMail-1.5, cdi-1.2, webProfile-7.0, jcaInboundSecurity-1.0, jpa-2.1, jsp-2.3, ejbLite-3.2, managedBeans-1.0, jsf-2.2, ejbHome-3.2, jaxws-2.2, localConnector-1.0, jsonp-1.0, el-3.0, jaxrsClient-2.0, concurrent-1.0, appClientSupport-1.0, ejbRemote-3.2, javaee-7.0, jaxb-2.2, mdb-3.2, jacc-1.5, batch-1.0, ejb-3.2, json-1.0, jaspic-1.1, distributedMap-1.0, websocket-1.1, wasJmsSecurity-1.0, wasJmsClient-2.0].
[AUDIT ] CWWKF0011I: The server defaultServer is ready to run a smarter planet.
[ERROR ] SRVE0276E: Error while initializing Servlet [JAX-RS Servlet]: javax.servlet.UnavailableException: SRVE0203E: Servlet [JAX-RS Servlet]: com.ibm.websphere.jaxrs.server.IBMRestServlet was found, but is missing another required class.
SRVE0206E: This error typically implies that the servlet was originally compiled with classes which cannot be located by the server.
SRVE0187E: Check your class path to ensure that all classes required by the servlet are present.SRVE0210I: This problem can be debugged by recompiling the servlet using only the classes in the application's runtime class path
謝謝你的回答。我刪除了所有Glassfish的依賴條件,但它表明這個錯誤: [錯誤] SRVE8052E:記錄ClassNotFoundException的 org.glassfish.jersey.servlet.ServletContainer [錯誤] SRVE0276E:初始化錯誤的Servlet [澤西Web應用程序]:javax.servlet.UnavailableException :SRVE0200E:Servlet [org.glassfish.jersey.servlet.ServletContainer]:無法找到所需的類 - org.glassfish.jersey.servlet.ServletContainer \t at com.ibm.ws.webcontainer.servlet.ServletWrapper $ 1.run(ServletWrapper 。java:1578) \t at [internal classes] –
我也放了我的web.xml文件。你可以告訴我怎樣才能修改這個文件來刪除澤西島的執行。 –
該錯誤表明您直接在應用程序中引用球衣類。您不需要這樣做,讓JAX-RS註釋爲您完成工作。 – ebullient