sách gpt4 ai đã đi

spring - WebApplicationInitializer 未在 jetty+selenium 上启动

In lại 作者:行者123 更新时间:2023-12-03 05:18:13 26 4
mua khóa gpt4 Nike

我正在尝试使用 gradle 在 jetty 上运行 selenium 测试,我的 gradle 配置如下:

gradle.build:

apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
apply plugin: 'findbugs'
//apply from:'http://github.com/breskeby/gradleplugins/raw/master/emmaPlugin/emma.gradle'
apply from: 'emma.gradle'
apply plugin: 'jetty'

sourceCompatibility = 1.7
version = ''

sourceSets {
Selen
}

xây dựng kịch bản {
kho lưu trữ {
mavenCentral()
}

phụ thuộc {
classpath 'org.gradle.api.plugins:gradle-cargo-plugin:0.6'
}
}

kho lưu trữ {
mavenCentral()
mavenRepo url: 'http://repository.primefaces.org'
mavenRepo url: 'http://repository.jboss.org/nexus/content/groups/public'
mavenRepo url: 'http://repository.jboss.org/maven2'
mavenRepo url: 'http://maven.springframework.org/release'
mavenRepo url: 'http://repo1.maven.org/maven2'
mavenRepo url: 'http://git.solutionstream.com/nexus/content/repositories/thirdparty'
}

phụ thuộc {
//JSF
compile group: 'com.sun.faces', name: 'jsf-api', version: '2.1.22'
compile group: 'com.sun.faces', name: 'jsf-impl', version: '2.1.22'
compile 'org.ocpsoft.rewrite:rewrite-servlet:2.0.3.Final'
compile 'org.ocpsoft.rewrite:rewrite-config-prettyfaces:2.0.3.Final'
compile 'javax.el:el-api:2.2'
runtime 'org.glassfish.web:el-impl:2.2'


//Servlet
compile group: 'javax.servlet', name: 'jstl', version: '1.2'
providedCompile group: 'org.jboss.spec', name: 'jboss-javaee-6.0', version: '1.0.0.Final'
compile 'taglibs:standard:1.1.2'
compile group: 'org.springframework', name: 'spring-web', version: '3.2.2.RELEASE'

//Omnifaces
compile 'org.omnifaces:omnifaces:1.5'

//Prime Faces
compile group: 'org.primefaces', name: 'primefaces', version: '4.0-SNAPSHOT'
compile 'org.primefaces.themes:bootstrap:1.0.10'

// DB
compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '1.3.1.RELEASE'
compile group: 'org.springframework', name: 'spring-aspects', version: '3.2.2.RELEASE'
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.9'

compile group: 'javax.inject', name: 'javax.inject', version: '1'
compile group: 'javax.enterprise', name: 'cdi-api', version: '1.0-SP4'
compile 'cglib:cglib-nodep:2.2.2'

//Hibernate / JPA
compile 'org.hibernate:hibernate-core:4.1.0.Final'
compile 'org.hibernate:hibernate-entitymanager:4.1.0.Final'
compile 'org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final'
//JSR-303
compile 'org.hibernate:hibernate-validator:4.3.1.Final'

// Spring Security
compile 'org.springframework.security:spring-security-core:3.1.4.RELEASE'
compile 'org.springframework.security:spring-security-web:3.1.4.RELEASE'
compile 'org.springframework.security:spring-security-config:3.1.4.RELEASE'

//Utility
compile 'com.google.guava:guava:14.0.1'
compile 'commons-lang:commons-lang:2.6'
compile 'org.apache.commons:commons-email:1.3.1'
compile 'com.typesafe:config:1.0.0'
compile 'joda-time:joda-time:2.2'
compile 'org.apache.geronimo.javamail:geronimo-javamail_1.4_mail:1.8.3'
compile 'org.slf4j:slf4j-api:1.7.2'
compile 'org.slf4j:jcl-over-slf4j:1.7.2'
compile 'org.slf4j:slf4j-log4j12:1.7.2'


//Mustache Templates
compile 'com.github.jknack:handlebars:1.0.0'

//Projects
//compile project(":ExtraValidators")

////TESTING DEPENDENCIES
testCompile 'com.googlecode.jmockit:jmockit:1.2'
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile 'com.h2database:h2:1.3.172'

//Spring Testing
testCompile 'org.springframework:spring-test:3.2.3.RELEASE'

/* Selenium */
seleniumCompile 'org.seleniumhq.selenium:selenium-java:2.33.0'
seleniumCompile 'junit:junit:4.11'
}

task wrapper(type: Wrapper){
gradleVersion = '1.5'
}

eclipse {
classpath {
downloadSources=true
plusConfigurations += configurations.seleniumCompile
}
}


task jettyDaemon(type: org.gradle.api.plugins.jetty.JettyRun) {
daemon = true
}

task selenium(type: Test, dependsOn: jettyDaemon) {
testClassesDir = sourceSets.selenium.output.classesDir
classpath = sourceSets.selenium.runtimeClasspath
}

WebApplicationInitializer :
package com.myapp.web.config;

import javax.faces.application.ProjectStage;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.request.RequestContextListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.DelegatingFilterProxy;

import com.myapp.data.config.SpringConfig;
import com.myapp.data.config.SpringJNDIDataConfig;
import com.myapp.data.config.SpringJNDIJPAConfig;
import com.myapp.data.config.SpringSecurityConfig;
import com.myapp.data.config.SpringWebConfig;
import com.myapp.utils.configuration.ConfigurationUtil;

public class WebappConfig implements WebApplicationInitializer {

protected final Logger logger = LoggerFactory.getLogger(getClass());

@Ghi đè
public void onStartup(final ServletContext servletContext) throws ServletException {



if(logger.isDebugEnabled()) {
logger.debug("Starting web context configuration");
}

AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
// rootContext.getEnvironment().setActiveProfiles("production");
rootContext.register(SpringConfig.class, SpringSecurityConfig.class, SpringWebConfig.class, SpringJNDIDataConfig.class, SpringJNDIJPAConfig.class);

servletContext.addListener(RequestContextListener.class);

new ContextLoader(rootContext).initWebApplicationContext(servletContext);

addFilters(servletContext, rootContext.getEnvironment());

servletContext.setInitParameter(ProjectStage.PROJECT_STAGE_PARAM_NAME, ConfigurationUtil.config().getString("jsf.stage"));
servletContext.setInitParameter("javax.faces.FACELETS_REFRESH_PERIOD", ConfigurationUtil.config().getString("jsf.refreshPeriod"));
}

private void addFilters(final ServletContext servletContext, final ConfigurableEnvironment configurableEnvironment) {
FilterRegistration.Dynamic securityFilter = servletContext.addFilter("springSecurityFilterChain", new DelegatingFilterProxy("springSecurityFilterChain"));
securityFilter.addMappingForUrlPatterns(null, false, "/*");
}

}

请告知在 jetty 上运行 Selenium 测试时如何使 WebApplicationInitializer 运行。

1 Câu trả lời

WebApplicationInitializer需要一个 Servlet 3 容器。但是,Gradle 的 Jetty 插件基于 Jetty 6,它仅支持 Servlet 2.5。

你有几个选择:

  • sử dụng web.xml 配置您的应用程序文件而不是 WebApplicationInitializer
  • 在 Gradle 中使用更新的 Jetty 版本。 GRADLE-1956 的评论中有一些变通方法
  • 使用替代容器,如 Tomcat (gradle-tomcat-plugin)
  • 使用替代插件,如 gradle-cargo-pluginhoặc arquillian-gradle-plugin . AFAIK 有一个新的 gradle 部署插件正在开发中,它应该基于 Arquillian .
  • 关于spring - WebApplicationInitializer 未在 jetty+selenium 上启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17370176/

    26 4 0
    行者123
    Hồ sơ cá nhân

    Tôi là một lập trình viên xuất sắc, rất giỏi!

    Nhận phiếu giảm giá Didi Taxi miễn phí
    Mã giảm giá Didi Taxi
    Giấy chứng nhận ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com