WSo2自定义处理程序:Class Not Found错误

时间:2016-01-12 18:03:38

标签: wso2

我根据用户指南中的说明编写了自定义身份验证处理程序。

我放置了jar / repository / components / lib并尝试将其从管理控制台添加到特定的API中 - >服务总线 - >服务视图,但在日志中收到类未找到错误。

我能够使其发挥作用的唯一方法是推动"推动"它是WSO2的一个部署罐(org.wso2.carbon.apimgt.gateway_5.0.3.jar)。当添加到这个jar并重新启动WSo2时,我让处理程序正常工作。

但我想这种解决方法并不是正确的方法......这是一个CLASSPATH问题还是我在过程中缺少的一些问题?

1 个答案:

答案 0 :(得分:0)

经过进一步检查后,我的JAR因某种原因已被破坏。我再次构建它现在可以正常工作。

为了社区中试图尝试此操作的任何人的利益,我将发布我所做的步骤(使用API​​M 1.10.0)

1)JAR文件:

$ cd /home/olahav/wso2/wso2am-1.10.0/repository/components/lib
$ jar tf extensions.jar
...
org/wso2/carbon/test/OferAPIAuthenticationHandler_1.class

2)API模板:

<handlers xmlns="http://ws.apache.org/ns/synapse">
<handler class="org.wso2.carbon.test.OferAPIAuthenticationHandler_1"/>
#foreach($handler in $handlers)
    <handler xmlns="http://ws.apache.org/ns/synapse" class="$handler.className">
        #if($handler.hasProperties())
        #set ($map = $handler.getProperties() )
        #foreach($property in $map.entrySet())
        <property name="$!property.key" value="$!property.value"/>
        #end
        #end
    </handler>
    #end
</handlers>

3)由于这是一个模板,需要重新创建API。然后检查服务视图(通过https://localhost:9443/carbon),您可以看到添加到处理程序列表中的处理程序:

    <handlers>
        <handler class="org.wso2.carbon.test.OferAPIAuthenticationHandler_1"/>
        <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler">
            <property name="apiImplementationType" value="ENDPOINT"/>
        </handler>
        <handler class="org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler"/>
        <handler class="org.wso2.carbon.apimgt.gateway.handlers.throttling.APIThrottleHandler">
            <property name="id" value="A"/>
            <property name="policyKeyResource" value="gov:/apimgt/applicationdata/res-tiers.xml"/>
            <property name="policyKey" value="gov:/apimgt/applicationdata/tiers.xml"/>
            <property name="policyKeyApplication" value="gov:/apimgt/applicationdata/app-tiers.xml"/>
        </handler>
        <handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageHandler"/>
        <handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtGoogleAnalyticsTrackingHandler">
            <property name="configKey" value="gov:/apimgt/statistics/ga-config.xml"/>
        </handler>
        <handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler"/>
    </handlers>

那就是它!

感谢所有帮助过我的人。