WSO2 ESB 4.8.0 - OAuth2处理程序类 - 依赖jars org.wso2.carbon.identity.oauth.stub-4.2.2.jar

时间:2014-03-10 10:57:41

标签: wso2 wso2esb

我有一个自定义处理程序,它将使用OAuth2验证令牌,并在REST API配置中包含自定义处理程序。将自定义handler.jar复制到不包含的/ repository / components / libs目录(org.wso2.carbon.identity.oauth.stub-4.2.2.jar)。当我使用OAuth访问令牌调用API时,会发现未找到类异常。

java.lang.NoClassDefFoundError: org/wso2/carbon/identity/oauth2/stub/dto/OAuth2TokenValidationRequestDTO_OAuth2AccessToken
    at org.wso2.handler.SimpleOauthHandler.handleRequest(SimpleOauthHandler.java:61)
    at org.apache.synapse.rest.API.process(API.java:285)
    at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76)
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
    at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:336)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:168)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.wso2.carbon.identity.oauth2.stub.dto.OAuth2TokenValidationRequestDTO_OAuth2AccessToken
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:455)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)

which is best way to include this dependent jar - org.wso2.carbon.identity.oauth.stub-4.2.2.jar? 

2 个答案:

答案 0 :(得分:0)

这可能有两个原因......

  1. AS org.wso2.carbon.identity.oauth.stub-4.2.2.jar是一个OSGI包,因此您需要将此包放入/repository/components/dropins。通常jar文件放在lib目录中,而不是OSGI包

  2. 您的服务器org.wso2.carbon.identity.oauth.stub中可能有一些其他jar文件暴露相同的类..如果请尝试删除它们。例如,您可以使用{{1}删除OAuth介体功能管理UI(OAuth中介功能已经包含Feature Manager jar文件。)

答案 1 :(得分:0)

如果您使用IS 4.6.0和ESB 4.8.0进行oAuth授权,则必须面对此问题,因为ESB 4.8.0使用org.wso2.carbon.identity.oauth.stub-4.2.1.jar

如果要实现hanlder与IS 4.6.0一起使用,可以将处理程序创建为包含org.wso2.carbon.identity.oauth.stub-4.2.2.jar作为私有包的OSGi包。但这似乎不是一个好习惯。 (样本可以在https://github.com/wenodpathirana/wso2-api-security-handlers.git

找到

此外,如果将ESB 4.8.1与IS 4.6.0一起使用,则可以使用没有上述异常的处理程序,因为ESB 4.8.1使用org.wso2.carbon.identity.oauth.stub-4.2.2.jar