環境構成:
- Windows Server 2008 R2 エンタープライズ
- WebSphere アプリケーション サーバー v7
- Worklight サーバー v6
- Derby データベース (Worklight Installation Manager によるデフォルトのインストール)
アプリケーションとアダプターを Worklight 実動サーバーにデプロイした後、Worklight Console の MBS (iPad 環境) を使用してアプリケーションをテストすると、次のエラーが発生します。
getNewsFeed_CallbackFailure 応答 :: {"status":500,"invocationContext":null,"errorCode":"UNEXPECTED_ERROR","errorMsg":"サーバーはアプリケーションからの要求を処理できませんでした。後でもう一度やり直してください。"}
DB2AdaptergetNewFeed_CallbackFailure
のプロシージャーが失敗したときに呼び出される場所newsFeed
。
そして、Websphereに次のエラーがありますSystemOut.log
:
[9/2/13 10:38:14:612 CEST] 00000032 SystemOut O CustomAuthenticationModule
[9/2/13 10:38:14:612 CEST] 00000032 CustomAuthent I CustomAuthenticationModule initialized
[9/2/13 10:38:14:612 CEST] 00000032 SystemOut O init CustomLogi nModule
[9/2/13 10:38:14:628 CEST] 00000032 servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Uncaught exception created in one of the service methods of the servlet GadgetAPIServlet in application claim_insurance_war. Exception created : com.worklight.server.auth.api.WorkLightAuthenticationException
at com.worklight.core.auth.impl.AuthenticationContext.checkAuthentication(AuthenticationContext.java:518)
at com.worklight.core.auth.impl.AuthenticationContext.processRealms(AuthenticationContext.java:384)
at com.worklight.core.auth.impl.AuthenticationContext.pushCurrentResource(AuthenticationContext.java:361)
at com.worklight.core.auth.impl.AuthenticationServiceBean.accessResource(AuthenticationServiceBean.java:75)
at com.worklight.integration.services.impl.DataAccessServiceImpl.invokeProcedureInternal(DataAccessServiceImpl.java:377)
at com.worklight.integration.services.impl.DataAccessServiceImpl.invokeProcedure(DataAccessServiceImpl.java:112)
at com.worklight.gadgets.serving.handler.BackendQueryHandler.getContent(BackendQueryHandler.java:142)
at com.worklight.gadgets.serving.handler.BackendQueryHandler.doPost(BackendQueryHandler.java:80)
at com.worklight.gadgets.serving.GadgetAPIServlet.doGetOrPost(GadgetAPIServlet.java:154)
at com.worklight.gadgets.serving.GadgetAPIServlet.lockedGetOrPost(GadgetAPIServlet.java:111)
at com.worklight.gadgets.serving.GadgetAPIServlet.doPost(GadgetAPIServlet.java:102)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1443)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1384)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
at com.worklight.core.auth.impl.AuthenticationFilter$1.execute(AuthenticationFilter.java:192)
at com.worklight.core.auth.impl.AuthenticationServiceBean.accessResource(AuthenticationServiceBean.java:76)
at com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:196)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:852)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:785)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:859)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1557)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:173)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:202)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:766)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:896)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527)
ログ ファイルの最初の 3 行は、カスタム認証ログイン モジュールからのものです。
***Generic custom authentication code from worklight sample***
public class CustomAuthenticationModule implements WorkLightAuthenticator{
private static final Logger logger = Logger.getLogger(CustomAuthenticationModule.class.getName());
private Map<String, Object> authenticationData = null;
public void init(Map<String, String> options) throws MissingConfigurationOptionException {
System.out.println("CustomAuthenticationModule");
logger.info("CustomAuthenticationModule initialized");
}
............
***My custom authentication code***
public class CustomLoginModule implements WorkLightAuthLoginModule {
private String USERNAME;
private String PASSWORD;
public void init(Map<String, String> options) throws MissingConfigurationOptionException {
System.out.println("init CustomLogi nModule");
}
............
これ以外に、Worklight 開発サーバーでエラーは発生していません...アダプターは魅力的に機能します。