我們正在嘗試使用spring boot嵌入式服務器進行開發和生產weblogic。看起來像這樣應該很容易,因爲戰爭文件很容易生成,並應該在任何容器中工作 - 就像編寫一次的Java口頭禪一樣,在任何地方運行。到目前爲止,這是一大痛苦,並不確定這是否真的有可能。WebLogic中的Spring Boot
如果有人有一些見解,我很樂意聽取您的意見。
我有一個可怕的時間試圖讓一個春季啓動應用程序在Web邏輯容器中工作。 Weblogic的12.2.1(注:這是Weblogic的最新版本)
第1期 - 因某種原因網絡邏輯要加載 JerseyServletContainerInitializer。這導致類沒有發現 異常,並且無法繼續。我的kludge,用我的代碼部署一個新的 JerseyServletContainerInitializer(使用正確的包)和 。讓我通過類未發現的問題到 春季代碼。
問題2 - SLF4J找到多個實現中 - 額外的一個是從的WebLogic ,其不能被刪除(在服務器上 他人應用使用它),但根據SLF4J這是唯一的解決方案。不在 都有幫助。
問題3 - Weblogic提供了多個持久提供者,其中春天似乎發現並試圖映射eclipse持久性 提供者而不是休眠提供者。 (我們不使用 一個persistence.xml)。這導致java.lang.ClassCastException: org.eclipse.persistence.jpa.PersistenceProvider不能轉換到 javax.persistence.spi.PersistenceProvider
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)
我的weblogic.xml看起來像
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);
}
}
我讀過所有的文檔,我可以找到很多倍。
我已經試過了示例代碼@https://github.com/DISID/disid-proofs.git 其部署,但無法正常工作或
您的主類是否實現了webApplicatioinitializee。示例將像公共類應用程序擴展SpringBootServletInitializer實現WebApplicationInitializer {} – rajadilipkolli
我想你已經檢查了[文檔](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto- weblogic)已經? –