我们正在尝试使用Spring boot嵌入式服务器进行开发,使用weblogic进行生产。看起来这应该很容易,因为war文件很容易生成,并且应该可以在任何容器中运行——就像java的咒语写一次,在任何地方运行一样。到目前为止一直是一个主要的痛苦,不确定这是否真的可行。
如果有人有什么见解,我很想听听你的意见。
我在试图让spring boot应用程序在web逻辑容器中工作时经历了一段糟糕的时光。Weblogic 12.2.1(注意,这是Weblogic的最新版本)
>
问题1-出于某种原因,web logic希望加载JerseyServletContainerInitializer。这会导致类not found异常,无法进一步获取。我的笨拙之处在于,编写一个新的JerseyServletContainerInitializer(使用正确的包)并用我的代码部署。让我通过spring代码中的类未找到问题。
问题2-slf4j发现了多个实现-额外的一个来自WebLogic,无法删除(服务器上的其他应用程序使用它),但根据slf4j,这是唯一的解决方案。一点帮助都没有。
问题3-Weblogic提供了多个持久性提供程序,spring似乎找到并尝试映射eclipse持久性提供程序,而不是hibernate提供程序。(我们没有使用persistence.xml)。这就产生了java。lang.ClassCastException:org。日食坚持不懈jpa。PersistenceProvider无法转换为javax。坚持不懈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>
我尽量不使用网络。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部署,但也不起作用
虽然一年半前,我会提供一个答案,以防其他人遇到这个问题。
问题可能来自调用上的一些有效注释,即stacktrace显示它使用Hibernate验证器库执行一些方法前验证。
验证器检查类是否使用javax.persistence.持久性加载,该验证器委托给持久性提供者以查找持久性提供者。默认验证器检查 /META-INF/services中定义的服务并找到两个(eclipse和hibernate)并返回第一个(!)。
因此,使用本问题中的提示(Weblogic 10.3.3尝试加载org.eclipse.persistence.jpa.的Perstemence Provider而不是配置的Hibernate Provider)并提供一个新的Perstemence ProviderContextHolder
,它只返回Hibernate,就可以了。但是,最好通过将contextCloked
设置为null来取消注册。
我可以为您的SLF4J问题提出解决方案。在您的weblogic中。xml,在容器描述符标记下添加以下标记:
<prefer-application-resources>
<resource-name>org/slf4j/impl/StaticLoggerBinder.class</resource-name>
</prefer-application-resources>
我也在使用12.2.1,尽管由于不同的原因我仍然无法让它工作,但我没有面临持久性提供程序的问题。在我的例子中,weblogic毫无问题地选择了Hibernate 5。你在POM中使用Spring启动器吗?你使用的是哪个版本的Boot?
也许可以把你的POM添加到问题中?
我需要在WebLogic 10.3.6服务器中部署的两个或多个应用程序之间配置SAML。我成功地在两个不同的域之间配置了SAML,但我需要在同一个域、不同的托管服务器中的两个应用程序之间使用SAML。如果我在同一个域、同一个托管服务器中部署应用程序,即使未配置SAML,凭据也会自动共享。App1在iframe内调用App2。当我访问App1时,登录页面工作。当我在iframe中访问App2时,凭证
我的Web应用程序有问题。它部署在Weblogic 10.3.6中。我的应用程序的结构是: 耳朵 问题是war搜索所有的jar只是进入耳的库(app-inf/lib),我需要,war在它自己的包中搜索jar(Web-inf/lib),然后在Ear的包中。 这是战争罐子的结构: com.grupoaval.accounts.v1.classes 我把这行放在名为weblogic.xml的战争文件中,
我正在尝试将一个简单的SpringBoot应用程序转换为部署在WebLogic中。它在buildin TomCat服务器上运行良好。然后对其进行更改并创建一个新的war文件。当我尝试部署war文件时,我得到这个错误。 web.xml的Servlet初始值设定项 application.java文件
我在weblogic 12.1服务器(它工作的地方)中有一个web服务,现在我必须将其转移到一个新的weblogic 12.2服务器中。在我的WEB-INF/lib JAR中,我有jersey 1.18文件。然而,当我部署它时,Jersey 1.18似乎被Jersey 2.21覆盖,通过调用web服务,我得到了一个“404未找到错误”。应用wadl现在具有<代码> 我试着放一个weblogic。W
我将我的应用程序作为企业库移植到WebLogic,以便我的EJB和MDB可以调用其中的代码。 我为这两个选择了一个耳朵包装,比如Lib1。ear和Lib2。ear包含APP-INF/lib目录,两个目录中都有100个JAR。我还更新了清单。两者的MF包含规范版本和实现版本。两者都已成功部署并可供使用。 现在,我更新了包含EJB和MDB的ear,并在weblogic应用程序中添加了以下内容。xml;
我使用安装了APEX 5.1.4的Oracle RDBMS 12c。我还有一个WebLogic 12c服务器。环境: Windows 10 oracle 12c数据库 apex 5.1.4 领主1.17.4 Welogic 12c 1) 用户APEX\u PUBLIC\u user已打开,并且具有已知密码。 2) 两种部署都达到顶点。war和i.war是:State=ActiveHealth=OK