在 weblogic 上部署 Jersey REST 时出错(<BEA-101216> <Servlet:"RestServlet" 无法在 Web 应用程序启动时预加载:"gateway"。)
Error while deploying Jersey REST on weblogic (<BEA-101216> <Servlet: "RestServlet" failed to preload on startup in Web application: "gateway".)
无法在 weblogic 服务器上部署 jersey REST,是否有特定于 weblogic 的 REST 服务配置?
完整的堆栈跟踪 -
25 Apr, 2018 7:01:53 PM
com.sun.jersey.server.impl.application.WebApplicationImpl initiate
INFO: Initiating Jersey application, version 'Jersey: 1.2 05/07/2010
02:11 PM' 25 Apr, 2018 7:01:53 PM
com.sun.jersey.server.impl.application.WebApplicationImpl
processRootResources SEVERE: The ResourceConfig instance does not
contain any root resource classes. <25 Apr, 2018 7:01:53 PM IST>
(StubLifecycleHelper.java:48)
at
weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:539)
at
weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1981)
at
weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1955)
at
weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1874)
at
weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3155)
at
weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1518)
at
weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:484)
at
weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:427)
at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:54)
at
weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at
weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:201)
at
weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:249)
at
weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:427)
at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:54)
at
weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at
weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:28)
at
weblogic.application.internal.BaseDeployment.next(BaseDeployment.java:672)
at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:54)
at
weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:212)
at
weblogic.application.internal.EarDeployment.activate(EarDeployment.java:59)
at
weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at
weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
at
weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184)
at
weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
at
weblogic.management.deploy.internal.DeploymentAdapter.doActivate(DeploymentAdapter.java:52)
at
weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
at
weblogic.management.deploy.internal.AppTransition.transitionApp(AppTransition.java:31)
at
weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
at
weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170)
at
weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124)
at
weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
at
weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at
weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
web.xml -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>FrontController</servlet-name>
<display-name>FrontController</display-name>
<description>Front Controller for handling requests</description>
<servlet-class>com.obopay.icici.FrontController</servlet-class>
</servlet>
<servlet>
<servlet-name>RestServlet</servlet-name>
<display-name>RestServlet</display-name>
<description>Rest Controller for handling http rest requests</description>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.obopay.ebp.auth.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>/siAuth</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>/failureResponse</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>/successResponse</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RestServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<!-- Define an error handler for 404 pages -->
<error-page>
<error-code>404</error-code>
<location>/jsp/error.jsp</location>
</error-page>
<!-- Define an error handler for java.lang.Throwable -->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/jsp/error.jsp</location>
</error-page>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
我正在使用下面的 罐子 -
jersey-bundle-1.2.jar
jsr311-api-1.1.1.jar
asm-3.1.jar
wlthint3client.jar
log4j-1.2.15.jar
已解决!
问题不在于 weblogic 服务器,问题是我的源代码在单独的文件夹而不是 src 中,因此 weblogic 无法在 src 文件夹中找到要扫描的包,因此在 pom.xml,部署成功 -
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-source</id>
<phase>generate-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>co/src</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>${basedir}/co/EBP</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
通过使用此插件,我将我的独立文件夹源代码复制到 src 文件夹,并将覆盖设置为 true。因此在 src 文件夹中提供了源代码。
这个问题也可以通过在 .classpath 文件中提及源文件夹来解决。
无法在 weblogic 服务器上部署 jersey REST,是否有特定于 weblogic 的 REST 服务配置?
完整的堆栈跟踪 -
25 Apr, 2018 7:01:53 PM com.sun.jersey.server.impl.application.WebApplicationImpl initiate INFO: Initiating Jersey application, version 'Jersey: 1.2 05/07/2010 02:11 PM' 25 Apr, 2018 7:01:53 PM com.sun.jersey.server.impl.application.WebApplicationImpl processRootResources SEVERE: The ResourceConfig instance does not contain any root resource classes. <25 Apr, 2018 7:01:53 PM IST> (StubLifecycleHelper.java:48) at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:539) at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1981) at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1955) at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1874) at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3155) at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1518) at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:484) at weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:427) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:54) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:201) at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:249) at weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:427) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:54) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:28) at weblogic.application.internal.BaseDeployment.next(BaseDeployment.java:672) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:54) at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:212) at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:59) at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161) at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79) at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184) at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361) at weblogic.management.deploy.internal.DeploymentAdapter.doActivate(DeploymentAdapter.java:52) at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200) at weblogic.management.deploy.internal.AppTransition.transitionApp(AppTransition.java:31) at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240) at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170) at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124) at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181) at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97) at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
web.xml -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>FrontController</servlet-name>
<display-name>FrontController</display-name>
<description>Front Controller for handling requests</description>
<servlet-class>com.obopay.icici.FrontController</servlet-class>
</servlet>
<servlet>
<servlet-name>RestServlet</servlet-name>
<display-name>RestServlet</display-name>
<description>Rest Controller for handling http rest requests</description>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.obopay.ebp.auth.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>/siAuth</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>/failureResponse</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>/successResponse</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RestServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<!-- Define an error handler for 404 pages -->
<error-page>
<error-code>404</error-code>
<location>/jsp/error.jsp</location>
</error-page>
<!-- Define an error handler for java.lang.Throwable -->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/jsp/error.jsp</location>
</error-page>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
我正在使用下面的 罐子 -
jersey-bundle-1.2.jar
jsr311-api-1.1.1.jar
asm-3.1.jar
wlthint3client.jar
log4j-1.2.15.jar
已解决!
问题不在于 weblogic 服务器,问题是我的源代码在单独的文件夹而不是 src 中,因此 weblogic 无法在 src 文件夹中找到要扫描的包,因此在 pom.xml,部署成功 -
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-source</id>
<phase>generate-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>co/src</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>${basedir}/co/EBP</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
通过使用此插件,我将我的独立文件夹源代码复制到 src 文件夹,并将覆盖设置为 true。因此在 src 文件夹中提供了源代码。
这个问题也可以通过在 .classpath 文件中提及源文件夹来解决。