【问题标题】:Wso2 Jax-RS Service project cant load Wso2 dependenciesWso2 Jax-RS 服务项目无法加载 Wso2 依赖项
【发布时间】:2017-09-05 11:08:33
【问题描述】:

我正在使用 Wso2 Development Studio 开发一个 Jax-RS 服务项目。 我想使用其他 Wso2 模块的一些类。所以我尝试将项目中的那些作为 maven 依赖项包含在内。

但是,我似乎做错了什么,因为我无法使依赖项工作。

例如,我有这些依赖项

 <dependencies>
    <dependency>
      <groupId>javax.ws.rs</groupId>
      <artifactId>jsr311-api</artifactId>
      <version>1.1.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.wso2.carbon</groupId>
      <artifactId>org.wso2.carbon.user.core</artifactId>
      <version>4.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.wso2.carbon</groupId>
      <artifactId>org.wso2.carbon.core</artifactId>
      <version>4.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.wso2.carbon</groupId>
      <artifactId>org.wso2.carbon.core.common</artifactId>
      <version>4.2.0</version>
    </dependency>
  </dependencies>

但是当我尝试使用这些包中的某些东西时,我得到了一个找不到的类

import javax.naming.directory.DirContext;
import javax.ws.rs.*;
import org.wso2.carbon.user.core.UserStoreException;


@Path("/")
public class Users {

    @GET
    public String getUsers()
    {
        return "this is v0.0.1";
    }

    @POST
    @Consumes("application/json")
    public String createUser() throws UserStoreException
    {
        throw new UserStoreException("this is an erro message but it worked");
        return "creatd";
    }
}

在此示例中,UserStoreException 甚至无法导入。

这就是我导入所需包的方式

<plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>3.3.0</version>
        <extensions>true</extensions>
        <configuration>
          <obrRepository>NONE</obrRepository>
          <instructions>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <Bundle-Name>${project.artifactId}</Bundle-Name>
            <Bundle-Version>0.0.1</Bundle-Version>
                        <Export-Package>
                            example.*
                        </Export-Package>
            <Import-Package>
                  org.wso2.carbon.*,
                  org.apache.commons.logging.*,
                  org.osgi.framework.*,
                  javax.naming.*,
                  org.osgi.service.component.*
           </Import-Package>
          </instructions>
        </configuration>
      </plugin> 

我的导入有什么问题吗?

如何才能成功导入 Wso2 依赖项?

这是服务器上的完整异常堆栈跟踪:

type Exception report

message Servlet.init() for servlet cxf threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

    javax.servlet.ServletException: Servlet.init() for servlet cxf threw exception
        org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:72)
        org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:91)
        org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:60)
        org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
        org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
        org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57)
        org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
        org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
        org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
        org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958)
        org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
        org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
        org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1756)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1715)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        java.lang.Thread.run(Thread.java:748)
    root cause

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UsersBean' defined in URL [jndi:/localhost/wso2usersapi-0.0.1/WEB-INF/cxf-servlet.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/wso2/carbon/user/core/UserStoreException
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:526)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
        org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
        org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
        org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
        org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
        org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
        org.apache.cxf.transport.servlet.CXFServlet.createSpringContext(CXFServlet.java:151)
        org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:74)
        org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:76)
        org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:72)
        org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:91)
        org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:60)
        org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
        org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
        org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57)
        org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
        org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
        org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
        org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958)
        org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
        org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
        org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1756)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1715)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        java.lang.Thread.run(Thread.java:748)
    root cause

    java.lang.NoClassDefFoundError: org/wso2/carbon/user/core/UserStoreException
        java.lang.Class.getDeclaredMethods0(Native Method)
        java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        java.lang.Class.getDeclaredMethods(Class.java:1975)
        org.apache.cxf.common.util.ReflectionUtil$6.run(ReflectionUtil.java:127)
        org.apache.cxf.common.util.ReflectionUtil$6.run(ReflectionUtil.java:125)
        java.security.AccessController.doPrivileged(Native Method)
        org.apache.cxf.common.util.ReflectionUtil.getDeclaredMethods(ReflectionUtil.java:125)
        org.apache.cxf.common.annotation.AnnotationProcessor.processMethods(AnnotationProcessor.java:85)
        org.apache.cxf.common.annotation.AnnotationProcessor.accept(AnnotationProcessor.java:72)
        org.apache.cxf.common.injection.ResourceInjector.inject(ResourceInjector.java:118)
        org.apache.cxf.common.injection.ResourceInjector.inject(ResourceInjector.java:112)
        org.apache.cxf.bus.spring.Jsr250BeanPostProcessor.postProcessBeforeInitialization(Jsr250BeanPostProcessor.java:136)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:393)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1415)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:518)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
        org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
        org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
        org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
        org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
        org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
        org.apache.cxf.transport.servlet.CXFServlet.createSpringContext(CXFServlet.java:151)
        org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:74)
        org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:76)
        org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:72)
        org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:91)
        org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:60)
        org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
        org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
        org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57)
        org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
        org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
        org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
        org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958)
        org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
        org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
        org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1756)
        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1715)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        java.lang.Thread.run(Thread.java:748)

【问题讨论】:

    标签: java web-services maven wso2 osgi


    【解决方案1】:

    由于 wso2 工件未与 maven Central 同步,因此您在尝试构建项目时可能会出错。 您能否将以下存储库添加到您的 pom.xml 并进行构建。

    <repositories>
            <!-- WSO2 released artifact repository -->
            <repository>
                <id>wso2.releases</id>
                <name>WSO2 Releases Repository</name>
                <url>http://maven.wso2.org/nexus/content/repositories/releases/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>daily</updatePolicy>
                    <checksumPolicy>ignore</checksumPolicy>
                </releases>
            </repository>
    
            <!-- WSO2 Snapshot artifact repository -->
            <repository>
                <id>wso2.snapshots</id>
                <name>WSO2 Snapshot Repository</name>
                <url>http://maven.wso2.org/nexus/content/repositories/snapshots/</url>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>daily</updatePolicy>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </repository>
    
            <repository>
                <id>wso2-nexus</id>
                <name>WSO2 internal Repository</name>
                <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>daily</updatePolicy>
                    <checksumPolicy>ignore</checksumPolicy>
                </releases>
            </repository>
        </repositories>
    

    【讨论】:

    • 我确实添加了这些,但我在本地运行 mvn eclipse:eclipse 并下载了许多 jar。但是,我正在将 carbon 应用程序部署到服务器,但它仍然说它没有找到 UserStoreException。构建应用程序时我必须做一些特定的事情吗?
    • 您是否在 import-package 部分正确提及了所有导入包?
    • 我更新了显示Import-package 的问题。它似乎是正确的?
    • 附上来自服务器的完整堆栈跟踪,希望它能给你一个见解。谢谢。
    • 你放这个jar文件的产品和版本是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2017-03-22
    • 2021-11-28
    • 2014-03-25
    • 2021-02-23
    • 2013-04-13
    • 2011-11-26
    相关资源
    最近更新 更多