描述

我做了一个JUnit测试,专注于尝试测试一个SOAP Web服务的调用.

我正在使用嵌入式tomcat服务器进行测试,以便使用模拟服务器运行我的测试.

我也使用http和https连接器.

我需要为这两个连接器使用自动端口,因为该测试正在Jenkins服务器上运行,并且我不能仅仅使用端口443或8443,因为它们已经被占用.

我明白,使用端口0作为标准端口将导致tomcat使用自动端口分配,但是我无法使用它与两个连接器.

预期行为

我也想为自定义的ssl连接器使用自动端口分配.

有可能以某种方式这样做吗?

示例代码

这是我的tomcat实例的代码:

@Before

public void setup() throws Throwable {

File tomcatWorkingDir = new File(mWorkingDir);

//Empty the target/tomcat-working-dir directory if it exist

//Create the directory otherwise

if(tomcatWorkingDir.exists() && tomcatWorkingDir.isDirectory()){

LOGGER.info("cleaning tomcat-working-dir directory");

FileUtils.cleanDirectory(new File(mWorkingDir));

} else {

LOGGER.info("create tomcat-working-dir directory");

tomcatWorkingDir.mkdir();

}

LOGGER.info("disabling ssl certification validation");

//Disable JVM ssl sockets connection

disableJVMCertificate();

//Add server certificate

createServerCertificate();

//Custom SSL Connector

Connector SSLConnector = getSSLConnector();

mTomcat = new Tomcat();

//Standard http startup port

mTomcat.setPort(0);

//Set up base directory

//Otherwise, tomcat would use the current directory

mTomcat.setBaseDir(mWorkingDir);

LOGGER.info("setting the ssl connector in TOMCAT");

Service service = mTomcat.getService();

service.addConnector(SSLConnector);

//Redirect current port

Connector defaultConnector = mTomcat.getConnector();

defaultConnector.setRedirectPort(SERVER_HTTPS_PORT);

//Configure the way WAR are managed by the engine

mTomcat.getHost().setAutoDeploy(true);

mTomcat.getHost().setDeployOnStartup(true);

//Add mock server into our webApp

String servletName = "/server";

File webApp = new File(mWorkingDir,"../../../ws-mock-server/src/main/webapp");

mTomcat.addWebapp(mTomcat.getHost(), servletName, webApp.getAbsolutePath());

//start tomcat

LOGGER.info("starting TOMCAT");

mTomcat.start();

}

这里为我的自定义ssl连接器.

private static Connector getSSLConnector(){

Connector connector = new Connector();

connector.setPort(SERVER_HTTPS_PORT);

connector.setSecure(true);

//Http protocol Http11AprProtocol

connector.setAttribute("protocol", "org.apache.coyote.http11.Http11AprProtocol");

//Maximum threads allowedd on this instance of tomcat

connector.setAttribute("maxThreads","200");

connector.setAttribute("SSLEnabled", true);

//No client Authentification is required in order to connect

connector.setAttribute("clientAuth", false);

//SSL TLSv1 protocol

connector.setAttribute("sslProtocol","TLS");

//Ciphers configuration describing how server will encrypt his messages

//A common cipher suite need to exist between server and client in an ssl

//communication in order for the handshake to succeed

connector.setAttribute("ciphers","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA");

LOGGER.info("setting keystore file");

//Here an absolute file path is needed in order to properly set up the keystore attribute

connector.setAttribute("keystoreFile",new File(".").getAbsolutePath().replace("\\", "/")+"/"+mWorkingDir+"/server.jks");

LOGGER.info("setting keystore pass");

connector.setAttribute("keystorePass","changeit");

return connector;

}

Tomcat实现java与http_java – 使用嵌入式tomcat服务器的JUnit测试,如何为http和https连接器指定自动端口?...相关推荐

  1. eclipse测试java程序_java-同一项目中的Eclipse junit测试

    我非常喜欢Maven约定:同一项目中有一个单独的main和test源树,部署了主代码,而没有部署测试代码. 包的结构可以相同(但不必相同). project src main java // sour ...

  2. tomcat 停止 java 线程不停止_Java Tomcat,底层Netty线程不停止

    我正在尝试使用log4j appender将日志发送到GrayLog2(log4j2-gelf).所以我加我的依赖到我的pom.xml配置log4j2.xml来配置我的appender.用maven构 ...

  3. Java使用Jetty实现嵌入式Web服务器及Servlet容器

    Jetty是一个Java实现的开源的servlet容器,它既可以像Tomcat一样作为一个完整的Web服务器和Servlet容器,同时也可以嵌入在Java应用程序中,在Java程序中调用Jetty. ...

  4. java如何保存初始化数据_java – 如何在JUnit测试中初始化数据

    我的任务是为服务层编写压力(负载)测试.主要是CRUD操作.我们使用JUnit作为测试框架,使用JUnitPerf构建负载测试,使用 Spring注入服务bean,使用hibernate访问数据库. ...

  5. 嵌入式Tomcat示例

    最近在看李号双老师的<深入拆解Tomcat&Jetty>专栏,思路超清楚,看到源码就怕怕的我也可以看的很欢脱,想看源码一起揭秘呢-- and 老师建议的第一步就是搞个嵌入式的tom ...

  6. tdd java_适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)

    tdd java 使用类似于BDD的语法,Java 8和Mockito-AssertJ二重奏为Idea调整JUnit测试类模板. 本文涵盖的主题似乎很简单. 但是,根据我的培训师经验,我知道(不幸的) ...

  7. 适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)

    使用类似BDD的语法,Java 8和Mockito-AssertJ二重奏为Idea调整JUnit测试类模板. 本文涵盖的主题似乎很简单. 但是,根据我的培训师经验,我知道(不幸的是)这不是常见的做法. ...

  8. Java单元测试之模拟利器-使用PowerMock进行Mock测试

    首页 国产Linux Linux命令 openSUSE ArchLinux Slackware FreeBSD Ubuntu CentOS Fedora Debian PHP教程 在线教程 登录 注册 ...

  9. java spring ldap_Spring Boot连接LDAP服务器

    LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,是一个开放.厂商中立的行业标准应用协议 ...

最新文章

  1. PHP 分页类 高洛峰 细说PHP
  2. python怎么筛选excel数据_PythonEXCEL读取-保存-矩阵合并-条件筛选
  3. Java中resource文件夹
  4. “浪姐”万茜盗号事件是锅传锅?阿里、网易都来回应了
  5. WSFC CLUSDB
  6. bzoj 1026: [SCOI2009]windy数(数位dp)
  7. sparklyr 1.0发布,有哪些新功能?
  8. 联想G480改装固态硬盘、光驱变机械硬盘以及装系统(上)
  9. [BZOJ2827]千山鸟飞绝
  10. Xshell- Xftp评估过期处理方法
  11. Can‘t get JDBC type for struct<date:int,day:int,hours:int,minutes:int,month:int,seconds:int,time:big
  12. matlab在axis,matlab中axis的用法
  13. 程序发邮件 - 从忐忑到坦然
  14. scrapy爬虫框架教程(二)-- 爬取豆瓣电影
  15. JavaScript面向对象入门
  16. HTC G7(Desire) Android 2.2 开启APP2SD最安全的方法(软件安装到SD卡)
  17. 魔兽世界9.0主播最多的服务器,魔兽世界9.0新人服务器选什么好?
  18. AngularJS(1)——AngularJS指令机制
  19. 关于win10系统cmd命令失效
  20. 转转三合一验机源码+验机报告

热门文章

  1. MATLAB算法实战应用案例精讲-【人工智能】机器视觉(概念篇)(补充篇)(附python和matlab代码实现)
  2. 成长的NFC移动支付和非接触式支付
  3. Gradle全局配置
  4. chrome 谷歌浏览器查看网页源代码快捷键
  5. python yield 惰性计算,用于scrapy中(美食杰爬虫为例)
  6. vue数据穿梭框自定义排序
  7. [软件工程]软件生存周期过程与管理————(2020.6.29学习笔记)
  8. KOA框架编程13-层级路由的使用
  9. responsive web design plugin collection
  10. GTSAM 官方教程学习