2016-01-12 5 views
1

Я написал собственный обработчик проверки подлинности на основе инструкций в руководстве пользователя.WSo2 custom handler: Class Not Found error

Я поместил свой jar/repository/components/lib и попытался добавить его к определенному API из консоли администратора -> Service bus -> Service view, но получил ошибку, полученную в журнале.

Единственным способом, с помощью которого я смог это сделать, было обходное решение «подталкивания» его к одному из баннеров развертывания WSO2 (org.wso2.carbon.apimgt.gateway_5.0.3.jar). При добавлении в эту банку и повторного запуска WSo2, я получил обработчик, работающий правильно.

Но я думаю, что это обходное решение не является правильным способом для этого ... Является ли это проблемой CLASSPATH или чем-то, что мне не хватает в процессе, чтобы заставить его работать?

+1

Что такое ошибка класса nototable? Можете ли вы опубликовать stacktrace? – lakshman

+0

Кажется, вы используете wso2 APIM. Разделите версию и журнал –

ответ

0

После очередной проверки выяснилось, что мой JAR был поврежден по какой-то причине. Я построил его снова, и он работает сейчас.

В пользу кого-либо из сообщества, которые пытаются попробовать это, я выложу шаги, которые я сделал (работая с APIM 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> 

Вот оно!

Спасибо всем, кто мне помог.