标签: wildfly-swarm

Spring Cloud/Boot vs Wildfly Swarm

我在网上做了一些现代容器少Java堆栈的分析,我发现的两个主要有希望的事情是:

  1. Spring Boot/Cloud(包装在Tomcat或Jetty中,......)
  2. Wildfly Swarm(Moduler Wildfly 9服务器,具有最少的可能组件)

是的,两者都有自己的功能,但我无法找到两者的良好比较,因为这两件事情在我看来比较好,但我还是要决定实施的好处,

  1. 适合开发者健康
  2. 复杂的企业逻辑
  3. 可扩展性
  4. 热部署
  5. 微服务方法
  6. 企业集成模式
  7. 持续交付管道.

谢谢你的想法

查希尔

java spring-boot microservices wildfly-9 wildfly-swarm

12
推荐指数
1
解决办法
6818
查看次数

WildFly Swarm Nullpointer @Inject bean

我有一个计划服务,通过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)

java cdi weld wildfly wildfly-swarm

6
推荐指数
1
解决办法
812
查看次数

在没有重启的IDE中使用Wildfly Swarm进行开发 - 在某处"热部署"?

我对Wildfly Swarm项目感兴趣,以创建fat-jar JavaEE应用程序,但无法弄清楚如何从IDE"热部署"更改的类.

每当我更改一行代码或JSF xhtml文件时,我当前必须重新启动整个应用程序需要大约7秒左右.那不是很有成效.

Spring Boot提供了一个spring-boot-devtools,可以重新加载至少一些类,传统的应用服务器提供热部署协议.Wildfly Swarm还有类似的东西吗?JRebel会帮忙吗?

ide java-ee wildfly wildfly-swarm

6
推荐指数
1
解决办法
5225
查看次数

使用JAX-RS进行Bean验证(轻松实现):无法识别参数名称

我正在使用带有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 +休眠验证器

谢谢。

jax-rs resteasy bean-validation wildfly-swarm

6
推荐指数
1
解决办法
1924
查看次数

运行WildFly Swarm Arquillian测试时出现ClassNotFoundException

(参考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)

jboss-arquillian wildfly-swarm

5
推荐指数
0
解决办法
772
查看次数

运行Wildfly Swarm与KeyCloak在码头图像上

我使用WildFly Swarm项目生成器使用KeyCloak服务器创建了小型Wildfly Swarm应用程序我添加了一些代码,使用以下内容构建并启动了我的胖罐:

java -jar -Dswarm.port.offset=100 login-service-swarm.jar
Run Code Online (Sandbox Code Playgroud)

应用程序盯着我创建新域后添加用户等.然后我注意到keycloak在我的目标文件夹中创建了3个文件.那些文件在哪里:

  • keycloak.h2.db
  • keycloak.lock.db
  • keycloak.trace.db

然后我决定创建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)

docker keycloak dockerfile wildfly-swarm

5
推荐指数
1
解决办法
829
查看次数

Wildfly-Swarm Consul服务发现 - 无效的服务地址

我正在开发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)

java service-discovery docker consul wildfly-swarm

5
推荐指数
1
解决办法
590
查看次数

测试中的 CDI 错误

我正在使用 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)

testing cdi jboss-arquillian wildfly-swarm thorntail

5
推荐指数
0
解决办法
661
查看次数

BouncyCastle NoSuchProviderException 即使它是 Maven 依赖项

我正在尝试使用 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)

java bouncycastle maven wildfly-swarm

3
推荐指数
1
解决办法
6352
查看次数

执行目标wildfly swarm插件时出现问题,API不兼容,java.lang.AbstractMethodError

我正在尝试debezium-swarm-demogithub存储库中构建应用程序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)

java maven microservices wildfly-swarm debezium

3
推荐指数
1
解决办法
803
查看次数