Pivotal Knowledge Base

フォローする

Embedded Pulse が "javax.validation.ValidationException: Unable to find a default provider" というエラーで起動に失敗

環境

製品 バージョン
Pivotal GemFire 7.0.x. 以降

事象

Spring Data GemFire 設定を用いたキャッシュメンバー上に Embedded Pluse を実行しようとすると、Embedded Pulse が以下のような "javax.validation.ValidationException: Unable to find a default provider" というエラーで起動に失敗することがある。

ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is javax.validation.ValidationException: Unable to find a default provider
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:636)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:602)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:521)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:462)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
at javax.servlet.GenericServlet.init(GenericServlet.java:244)

原因

この問題は、Spring フレームワークで内部的に必要とされる、JSR-303 に基づく Bean Validator のための実装欠如により引き起こされている。事実、Pulse アプリケーションは Spring フレームワークを元に開発されている。

解決策

Embedded Pluse とともに GemFire キャッシュを起動する際に、クラスパスに Hibernate Validator の jar ファイルを追加する。Maven を使用している場合は、依存関係情報として pom.xml に以下のエントリーを追加する。

<dependency>
  <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
  <version>5.2.1.Final</version>
</dependency>

コメント

Powered by Zendesk