标签: java-ee-7

单例 Java EE bean 如何获取对其自身的引用?

我有一个单例 bean,该@PostConstruct方法需要调用@Asynchronous其自身内部的方法。它不能直接使用来执行此操作,this因为这会使调用同步。我不能自己@Inject,因为它是圆形的。

ejb java-ee-6 ejb-3.1 java-ee-7 jakarta-ee

0
推荐指数
1
解决办法
1783
查看次数

Glassfish摘要认证

我想使用JAX-RS构建RESTful Web服务(Jersey + Jackson,Jackson用于生成JSON).

我使用Glassfish 4.0作为服务器,netbeans作为IDE.

Web服务工作正常,但目前我没有任何身份验证.

所以现在我正在考虑散列密码的摘要验证,这样你就不需要以纯文本形式传输密码了.另外我想使用https,以便加密数据.

我理解了理论.但我不知道我怎么能用Glassfish在Netbeans中做到这一点.

我看到一些教程在glassfish的管理控制台中做了一些事情.但是,有没有办法在netbeans中做到这一点?我不能在部署应用程序时创建的netbeans中定义一个领域吗?

创建领域和东西之后.我想我需要在我的所有资源(WebServices)中注入某种经过身份验证的"用户"-Object.但我以前从未这样做过.我正在寻找一个很好的教程,它描述了我如何设置摘要认证,注入网络netbeans可以用netbeans做到这一点,这样我就能很好地理解它.

glassfish jax-rs java-ee-6 java-ee-7 jersey-2.0

0
推荐指数
1
解决办法
1237
查看次数

将 index.html 更改为 index.jsp (JavaEE+Glassfish)

我有一个小问题。是否可以“删除”index.html 并创建(替换 index.html)index.jsp?如何?

我没有找到任何带有主页地址 (index.html) 的文件(web.xml、glassfish-resource.xml)来更改它(对于 index.jsp)。我在网上没有找到答案...

感谢您的回复!

jsp web-applications glassfish-4 java-ee-7

0
推荐指数
1
解决办法
2万
查看次数

CDI 拦截器未启动

我的拦截器没有在应该启动的时候启动,即使它已在 bean 中注册并且文件没有提供任何警告。我缺少什么?

编辑1:我希望能够在每次Genres.java调用和离开函数时进行记录,但使用此配置我根本没有得到任何输出。

编辑 2:按照 Svetlin 的建议应用断点后,我可以确认代码永远不会到达拦截器或生产者。

beans.xml

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="all">
    <interceptors>
        <class>no.krystah.log.LoggingInterceptor</class>
    </interceptors>
</beans>
Run Code Online (Sandbox Code Playgroud)


日志拦截器.java

package no.krystah.log;

import javax.inject.Inject;
import javax.interceptor.AroundConstruct;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;

import org.slf4j.Logger;

@Log @Interceptor
public class LoggingInterceptor {

    @Inject
    Logger logger;

    @AroundConstruct
    private void init(InvocationContext ic) throws Exception {
        logger.info("Entering constructor");
        try {
            ic.proceed();
        } finally {
            logger.info("Exiting constructor");
        }
    }
    @AroundInvoke
    public Object logMethod(InvocationContext ic) throws Exception {
        logger.info(ic.getTarget().toString()+" - "+ ic.getMethod().getName()); …
Run Code Online (Sandbox Code Playgroud)

java interceptor cdi java-ee-7

0
推荐指数
1
解决办法
1891
查看次数

如何通过 Java API 从正在运行的 docker 镜像中获取 Docker 容器 ID?

在谷歌大学上没有找到任何东西,所以在这里检查。我有一个企业应用程序在 Docker 映像内的应用程序服务器上运行。在运行过程中,企业应用程序需要使用Java API调用来获取其运行所在的Docker Container Id。这是如何完成的?

java docker java-ee-7

0
推荐指数
1
解决办法
3327
查看次数

如何通过Web套接字向连接的用户发送消息?

我想通过Web套接字向特定用户发送消息。到目前为止,我可以打开Web套接字并像这样从客户端读取消息:

@ServerEndpoint(value = "/wsep")
public class WebSocketEndpoint {

    private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketEndpoint.class);

    private Session session;

    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        try {
            session.getBasicRemote().sendText("You are connected. Your ID is " + session.getId());
        } catch (Exception e) {
            LOGGER.error("Error on open web socket", e);
        }
    }

    @OnMessage
    public void onClientMessage(String message, Session session) {      
        LOGGER.info("Message from {} is: {}", session.getId(), message);
    }

    @OnClose
    public void onClose(Session session) {
        this.session = null;
        LOGGER.info("{} disconnected", session.getId());
    } …
Run Code Online (Sandbox Code Playgroud)

java websocket java-ee-7

0
推荐指数
1
解决办法
7885
查看次数

如何动态加载 CDI 事件观察器?

我有一个在 JBoss/Wildfly 上运行的应用程序。我使用 CDI 事件在模块之间进行通信。我希望能够使用事件作为插入自定义的一种方式,基本上动态加载一个额外的观察者,该观察者也将接收 CDI 事件。

这是我用来从 EJB 中动态加载类的片段:

File file = new File("D:\\workspace\\integrator\\target\\classes\\");
            
URL url = file.toURI().toURL();
URL[] urls = new URL[]{url};

ClassLoader cl = new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());

Class cls = cl.loadClass("demo.DemoObserver");
observerInstance=cls.newInstance();
Run Code Online (Sandbox Code Playgroud)

加载的类非常简单,只是一个普通的 CDI 事件观察器,注释为 @Dependent 以“看到”为一个 bean。我的 beans.xml 被配置为自动发现 bean。

@Dependent
public class DemoObserver {
    
    private boolean observed=false;
    
    public DemoObserver() {
        observed=false;
    }
    
    @PermitAll
    public void stateChanged(@Observes EquipmentE10StateChanged event) {
            observed=true;
            System.out.println("Demo observer received event E10 state changed: " + event.toString());
    }

}
Run Code Online (Sandbox Code Playgroud)

该类已加载并实例化(我可以看到来自其构造函数的日志),但它从不接收事件。

有什么我可以做的事情吗?

java jboss cdi java-ee-7 wildfly

0
推荐指数
1
解决办法
132
查看次数