我在网上做了一些现代容器少Java堆栈的分析,我发现的两个主要有希望的事情是:
是的,两者都有自己的功能,但我无法找到两者的良好比较,因为这两件事情在我看来比较好,但我还是要决定实施的好处,
谢谢你的想法
查希尔
我有一个计划服务,通过REST作为JSON获得它的工作.
本Resource类:
import java.io.IOException;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import de.fszm.scheduler.controller.SchedulerController;
import de.fszm.scheduler.entities.MySchedule;
@Path("/schedule")
public class ScheduleRESTResource {
@Inject
SchedulerController scheduleController;
@POST
@Path("/job")
@Consumes(MediaType.APPLICATION_JSON)
public void schedule(MySchedule schedule) throws IOException {
scheduleController.buildSchedule(schedule);
}
}
Run Code Online (Sandbox Code Playgroud)
的ScheduleController:
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import de.fszm.scheduler.entities.MySchedule;
@Named
@RequestScoped
public class SchedulerController {
public void buildSchedule(MySchedule schedule) {
System.out.println("Test");
}
}
Run Code Online (Sandbox Code Playgroud)
的SchedulerMain:
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.wildfly.swarm.container.Container;
import org.wildfly.swarm.jaxrs.JAXRSArchive;
import de.fszm.scheduler.controller.SchedulerController;
import de.fszm.scheduler.entities.MySchedule;
import de.fszm.scheduler.rest.JaxRSActivator;
import …Run Code Online (Sandbox Code Playgroud) 我对Wildfly Swarm项目感兴趣,以创建fat-jar JavaEE应用程序,但无法弄清楚如何从IDE"热部署"更改的类.
每当我更改一行代码或JSF xhtml文件时,我当前必须重新启动整个应用程序需要大约7秒左右.那不是很有成效.
Spring Boot提供了一个spring-boot-devtools,可以重新加载至少一些类,传统的应用服务器提供热部署协议.Wildfly Swarm还有类似的东西吗?JRebel会帮忙吗?
我正在使用带有Bean验证的JAX-RS资源,并且按预期在这两个作品之间进行了集成。
但是,在验证错误报告参数名称为arg0的情况下会生成默认错误消息,如下所示
[PARAMETER]
[login.arg0.password]
[password is required]
[]
Run Code Online (Sandbox Code Playgroud)
对应的方法定义:
@POST //and other JAX-RS annotations
public Response login(
@NotNull
@Valid
LoginBody loginBody) {
[...]
protected static class LoginBody {
@NotNull(message = EMAIL_REQUIRED)
public String email;
@NotNull(message = PASSWORD_REQUIRED)
public String password;
}
Run Code Online (Sandbox Code Playgroud)
尽管我对这种消息模式总体上很满意,但实际上令人anny恼的是,原始参数名称未被识别,即,我希望看到
登录。loginBody .password而不是arg0。
是否有解决此问题的简便方法,例如以某种方式为该参数提供一个明确的名称?
我正在使用WildFly Swarm 2017.6.0。从我发现的结果来看,这意味着我拥有resteasy + resteasy-validator +休眠验证器
谢谢。
(参考https://issues.jboss.org/projects/SWARM/issues/SWARM-767)
我正在尝试使用Arquillian测试我的WildFly Swarm应用程序.我有一个自定义Main类,用于我的Swarm和自定义部署.当我尝试运行我的测试时,我在maven的某些第三方库上收到ClassNotFoundException.
首先,这是我的测试:
@RunWith(Arquillian.class)
public class PasswordStorageTest {
@CreateSwarm
public static Swarm createSwarm() {
return TestBuilder.createSwarm();
}
@Deployment
public static WARArchive createDeployment() {
return TestBuilder.createDeployment();
}
@Test
public void testHashesAreUnique() throws PasswordStorage.CannotPerformOperationException {
String password = UUID.randomUUID().toString();
String hash1 = PasswordStorage.createHash(password);
String hash2 = PasswordStorage.createHash(password);
assertNotEquals("Hashes were not unique.", hash1, hash2);
}
@Test
public void testVerifyPassword() throws PasswordStorage.CannotPerformOperationException, PasswordStorage.InvalidHashException {
String password = UUID.randomUUID().toString();
String hash = PasswordStorage.createHash(password);
assertTrue("Password verification failed.", PasswordStorage.verifyPassword(password, hash));
}
} …Run Code Online (Sandbox Code Playgroud) 我使用WildFly Swarm项目生成器使用KeyCloak服务器创建了小型Wildfly Swarm应用程序我添加了一些代码,使用以下内容构建并启动了我的胖罐:
java -jar -Dswarm.port.offset=100 login-service-swarm.jar
Run Code Online (Sandbox Code Playgroud)
应用程序盯着我创建新域后添加用户等.然后我注意到keycloak在我的目标文件夹中创建了3个文件.那些文件在哪里:
然后我决定创建docker图像并在本地docker环境中运行它.所以我创建了docker文件:
FROM java:openjdk-8-jdk
ADD login-service-swarm.jar /opt/login-service-swarm.jar
ADD keycloak.h2.db /opt/keycloak.h2.db
ADD keycloak.lock.db /opt/keycloak.lock.db
ADD keycloak.trace.db /opt/keycloak.trace.db
EXPOSE 8180
ENTRYPOINT ["java", "-jar", "-Dswarm.port.offset=100", "/opt/login-service-swarm.jar"]
Run Code Online (Sandbox Code Playgroud)
建立图像使用:
docker build -f Dockerfile -t login-service-swarm-v1 .
Run Code Online (Sandbox Code Playgroud)
图像在我的泊坞窗图像列表中可见:
C:\Work\Java\login-service\docker>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
login-service-swarm-v1 latest 710cddc59623 About a minute ago 790 MB
<none> <none> 100c0ee60f25 3 hours ago 779 MB
demo latest 03d12d49ba5e 4 hours ago 760 …Run Code Online (Sandbox Code Playgroud) 我正在开发Wildfly-Swarm应用程序,我想使用Consul作为我的服务发现.所以我添加了拓扑结构分数,在project-defaults.yml中设置我的Consul路径并添加@Advertise("service-name")到我的Endpoint.
如果我开始使用我的应用程序
java –jar my-swarm-app.jar
Run Code Online (Sandbox Code Playgroud)
一切正常.
我的project-defaults.yml:
service:
catalog:
service-name: "service-name"
swarm:
port:
offset: 501
consul:
url: "http://172.30.3.80:8500"
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个Dockerfile将我的胖罐包装在Docker镜像中时:
FROM openjdk:8-jre-alpine
ADD my-swarm-app.jar /opt/my-swarm-app.jar
EXPOSE 8581
ENTRYPOINT ["java", "-jar", "-Djava.net.preferIPv4Stack=true", "/opt/my-swarm-app.jar"]
Run Code Online (Sandbox Code Playgroud)
建立它:
docker build -f Dockerfile -t my-swarm-app .
Run Code Online (Sandbox Code Playgroud)
并运行它:
docker run -p 8581:8581 my-swarm-app
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
2017-09-26 15:17:54,240 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service swarm.topology.register.consent-service.http: org.jboss.msc.service.StartException in service swarm.topology.register.consent-service.http: com.orbitz.consul.ConsulException: Invalid service address
at org.wildfly.swarm.topology.deployment.RegistrationAdvertiser.start(RegistrationAdvertiser.java:79)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) …Run Code Online (Sandbox Code Playgroud) 我正在使用 Wildfly Swarm 2018.5.0 构建一个应用程序。
当我设置应用程序测试时,“Hello World”应用程序中的一切都工作正常,但是当我将其添加到具有所有依赖项的应用程序时,会出现很多错误,例如:Unsatisfied dependency for type LoggingFraction with qualifiers @Any
如何解决此错误并正确设置我的测试的最佳方法?这是野蝇群错误吗?有什么办法让它发挥作用吗?为了澄清起见,我已更新到 Thorntail 2.1.0.Final,并且我在jandex依赖性方面也有类似的问题。在“Hello World”中工作,但是当我添加一些依赖项时出现错误。现在我正在没有测试的情况下进行开发,我不喜欢这样做!:(
2018-08-27 10:20:48,696 WARN [org.jboss.weld.Validator] (MSC service thread 1-2) WELD-001471: Interceptor method setupFactories defined on class org.wildfly.swarm.container.runtime.xmlconfig.StandaloneXMLParserProducer is not defined according to the specification. It should not throw java.lang.Exception, which is a checked exception.
at org.wildfly.swarm.container.runtime.xmlconfig.StandaloneXMLParserProducer.setupFactories(StandaloneXMLParserProducer.java:0)
StackTrace
2018-08-27 10:20:48,698 WARN [org.jboss.weld.Validator] (MSC service thread 1-2) WELD-001471: Interceptor method postConstruct defined on class org.wildfly.swarm.container.runtime.wildfly.ShrinkWrapFileSystem is not defined according to the specification. …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Wildfly Swarm 构建一个现有的 JavaEE 项目,但我的一个库中不断遇到问题。它应该从服务器加载 PEM 格式的公钥并用它来验证签名。然而,我不断得到这个:
2017-06-08 20:55:59,229 ERROR [stderr] (default task-3) java.security.NoSuchProviderException: no such provider: BC
2017-06-08 20:55:59,234 ERROR [stderr] (default task-3) at sun.security.jca.GetInstance.getService(GetInstance.java:83)
2017-06-08 20:55:59,238 ERROR [stderr] (default task-3) at sun.security.jca.GetInstance.getInstance(GetInstance.java:206)
2017-06-08 20:55:59,238 ERROR [stderr] (default task-3) at java.security.KeyFactory.getInstance(KeyFactory.java:211)
2017-06-08 20:55:59,239 ERROR [stderr] (default task-3) at enterprises.mccollum.wmapp.ssauthclient.PublicKeySingleton.loadPubKey(PublicKeySingleton.java:83)
2017-06-08 20:55:59,239 ERROR [stderr] (default task-3) at enterprises.mccollum.wmapp.ssauthclient.PublicKeySingleton.init(PublicKeySingleton.java:57)
Run Code Online (Sandbox Code Playgroud)
导致问题的代码在这里:
PublicKeySingleton.java snippet:
81: PemObject pemPubKey = ldPemFromServer();
82: if(pemPubKey != null){
83: KeyFactory kf = KeyFactory.getInstance("RSA", BouncyCastleProvider.PROVIDER_NAME);
84: PublicKey lPubKey …Run Code Online (Sandbox Code Playgroud) 我正在尝试debezium-swarm-demo在github存储库中构建应用程序debezium-examples
构建没有完成,给了我 Execution default of goal org.wildfly.swarm:wildfly-swarm-plugin:2018.5.0:package failed: An API incompatibility was encountered while executing org.wildfly.swarm:wildfly-swarm-plugin:2018.5.0:package: java.lang.AbstractMethodError: null
maven使用-e参数生成的输出如下:
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< com.example:debezium-swarm-demo >-------------------
[INFO] Building WildFly Swarm Example 1.0.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ debezium-swarm-demo ---
[INFO] Deleting /home/anushka/SideProjects/Docker/debezium-examples/end-to-end-demo/debezium-swarm-demo/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ debezium-swarm-demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource …Run Code Online (Sandbox Code Playgroud) wildfly-swarm ×10
java ×5
cdi ×2
docker ×2
maven ×2
wildfly ×2
bouncycastle ×1
consul ×1
debezium ×1
dockerfile ×1
ide ×1
java-ee ×1
jax-rs ×1
keycloak ×1
resteasy ×1
spring-boot ×1
testing ×1
thorntail ×1
weld ×1
wildfly-9 ×1