2016-08-19 7 views
1

私たちは開発用にSpringブート組み込みサーバを、プロダクション用にWebLogicを使用しようとしています。このように、戦争ファイルは簡単に作成でき、どんなコンテナでも動作するはずです。これまでのところ、大きな痛みがあり、本当に可能かどうかはわかりません。WebLogicでのSpringブート

誰かがある程度の洞察力を持っていれば、私はあなたから聞いてみたいと思います。

私は春の起動アプリケーションをWebロジックコンテナで動作させるのに苦労しています。 Weblogicの12.2.1(これは、WebLogicの最新リリースであることに注意)

  1. 問題1 - ウェブロジックが JerseyServletContainerInitializerをロードしたい何らかの理由で。これにより、クラスが見つからない 例外が発生し、これ以上取得できません。私のkludgeは、 JerseyServletContainerInitializer(正しいパッケージで)と というコードを私のコードでデプロイしてください。私はクラスを発見できませんでした スプリングコードに問題が見つかりました。

    は問題2 - SLF4Jは、複数の実装を見つけ - 余分一つは除去できないのWebLogicから ある(サーバ 上の他のアプリケーションはそれを使用)、それはSLF4Jに係る唯一の解決策です。 には表示されません。

    Issue 3 - Weblogicは、 という春が見つかったと思われる複数の永続プロバイダを提供し、休止状態のプロバイダーではなく、永続性のある永続性のあるプロバイダ を試してマッピングします。 (我々は persistence.xmlを使用していません)。


Caused by: java.lang.ClassCastException: org.eclipse.persistence.jpa.PersistenceProvider cannot be cast to javax.persistence.spi.PersistenceProvider 
     at javax.persistence.Persistence$1.isLoaded(Persistence.java:110) 
     at org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:46) 
     at org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:128) 
     at org.hibernate.validator.internal.engine.resolver.CachingTraversableResolverForSingleValidation.isReachable(CachingTraversableResolverForSingleValidation.java:36) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.isReachable(ValidatorImpl.java:1612) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:1597) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:609) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:580) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForSingleDefaultGroupElement(ValidatorImpl.java:524) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:492) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:457) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:407) 
     at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:205) 
     at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:92) 
     at org.springframework.validation.DataBinder.validate(DataBinder.java:852) 
     at org.springframework.boot.bind.PropertiesConfigurationFactory.validate(PropertiesConfigurationFactory.java:350) 
     at org.springframework.boot.bind.PropertiesConfigurationFactory.doBindPropertiesToTarget(PropertiesConfigurationFactory.java:271) 
     at org.springframework.boot.bind.PropertiesConfigurationFactory.bindPropertiesToTarget(PropertiesConfigurationFactory.java:241) 
     at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:   334) 
     at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:   289) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) 
     at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813) 
     at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) 
     at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 

org.eclipse.persistence.jpa.PersistenceProviderが にキャストすることはできませんjavax.persistence.spi.PersistenceProvider

マイweblogic.xmlのは

次のようになります。これは、java.lang.ClassCastExceptionが、その結果

http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd「>

<wls:weblogic-version>12.1.3</wls:weblogic-version> 
<wls:context-root>ola/</wls:context-root> 
<wls:container-descriptor> 
    <wls:prefer-web-inf-classes>false</wls:prefer-web-inf-classes> 

    <wls:prefer-application-packages> 
     <wls:package-name>javax.persistence.*</wls:package-name> 
     <wls:package-name>org.glassfish.*</wls:package-name> 
     <wls:package-name>antlr.*</wls:package-name> 
     <wls:package-name>org.slf4j.*</wls:package-name> 
     <wls:package-name>org.hibernate.*</wls:package-name> 
     <wls:package-name>javassist.*</wls:package-name> 
     <wls:package-name>org.springframework.*</wls:package-name> 
     <wls:package-name>com.sun.research.*</wls:package-name> 
     <wls:package-name>javax.annotation.*</wls:package-name> 
     <wls:package-name>org.jvnet.hk2.*</wls:package-name> 
     <wls:package-name>org.jvnet.tiger_types.*</wls:package-name> 
    </wls:prefer-application-packages> 

</wls:container-descriptor> 

私は、web.xmlを使用しないようにしようとしています。私は、ドキュメントのすべてを読んで、私は何十回も見つけることができます



    package com.cc.ola.launch; 

    import org.springframework.boot.autoconfigure.SpringBootApplication; 
    import org.springframework.boot.builder.SpringApplicationBuilder; 
    import org.springframework.boot.context.web.SpringBootServletInitializer; 
    import org.springframework.boot.orm.jpa.EntityScan; 
    import org.springframework.cache.annotation.EnableCaching; 
    import org.springframework.context.annotation.Configuration; 
    import org.springframework.context.annotation.EnableMBeanExport; 
    import org.springframework.context.annotation.Profile; 
    import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 
    import org.springframework.jms.annotation.EnableJms; 
    import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; 
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 
    import org.springframework.transaction.annotation.EnableTransactionManagement; 
    import org.springframework.web.WebApplicationInitializer; 

    @Profile("test") 
    @Configuration 
    @SpringBootApplication(scanBasePackages = "com.cc") 
    @EntityScan(basePackages = "com.cc.ola") 
    @EnableJpaRepositories(basePackages = { "com.cc.ola" }) 
    @EnableCaching 
    @EnableJms 
    @EnableMBeanExport 
    @EnableTransactionManagement 
    @EnableWebSecurity 
    @EnableGlobalMethodSecurity(jsr250Enabled = true, prePostEnabled = true) 
    public class LaunchFromWebLogic extends SpringBootServletInitializer implements WebApplicationInitializer { 

     @Override 
     protected SpringApplicationBuilder configure(final SpringApplicationBuilder application) { 
      System.out.println("loading spring application"); 
      return application.sources(LaunchFromWebLogic.class); 
     } 
    } 

私の主なクラスがあります。

私はあなたのSLF4Jの問題に対する解決策を提案することができますが、展開

+0

メインクラスでWebアプリケーションを実装しましたか?例はpublic classのようになりますApplication Extended SpringBootServletInitializerはWebApplicationInitializer {}を実装しています – rajadilipkolli

+0

[doc](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto- weblogic)はすでにですか? –

答えて

0

いずれも動作しませんhttps://github.com/DISID/disid-proofs.git @サンプルコードを試してみました。 weblogic.xmlに、コンテナ記述子タグの下に次のタグを追加します。

<prefer-application-resources> 
    <resource-name>org/slf4j/impl/StaticLoggerBinder.class</resource-name> 
</prefer-application-resources> 

私も12.2を使用しています。1と私はまだ異なる理由で動作するようになることはできませんが、私は持続性プロバイダの問題に直面しませんでした。私の場合、weblogicは問題なくHibernate 5をピックアップしました。 POMで春のスターターを使用していますか?どのバージョンのBootを使用していますか?

おそらくあなたのPOMを質問に追加しますか?

0

1年半前ですが、他の誰かがこの問題に遭遇した場合に備えて、私は答えを提供します。

この問題は、おそらく電話で@Validアノテーションが原因で発生している可能性があります。つまり、stacktraceは、Hibernate Validatorライブラリを使用してプリプロセス検証を実行していることを示しています。

javax.persistence.Persistenceを使用してクラスがロードされているかどうかを確認します。PersistenceProviderContextHolderに委譲してPersistenceProviderを検索します。デフォルトのサービスは/META-INF/servicesで定義されているサービスを検査し、2つ(日食と休止状態)を見つけて最初の(!)を返します。

この質問のヒント(Weblogic 10.3.3 trying to load org.eclipse.persistence.jpa.PersistenceProvider instead of configured Hibernate Provider)を使用し、Hibernateを返すだけの新しいPersistenceProviderContextHolderを提供することは、そのトリックを行います。ただし、ヌルに設定することでcontextClosedの登録を解除するとよいでしょう。

関連する問題