小编Rya*_*yan的帖子

以编程方式从PEM获取KeyStore

如何以编程方式从包含证书和私钥的PEM文件中获取KeyStore?我试图通过HTTPS连接向服务器提供客户端证书.我已经确认,如果我使用openssl和keytool获取jks文件,我会动态加载客户端证书.我甚至可以通过动态读取p12(PKCS12)文件来使其工作.

我正在研究使用BouncyCastle的PEMReader类,但我无法解决一些错误.我正在运行带有-Djavax.net.debug = all选项的Java客户端和带有调试LogLevel的Apache Web服务器.我不知道该找什么.Apache错误日志表明:

...
OpenSSL: Write: SSLv3 read client certificate B
OpenSSL: Exit: error in SSLv3 read client certificate B
Re-negotiation handshake failed: Not accepted by client!?
Run Code Online (Sandbox Code Playgroud)

Java客户端程序指示:

...
main, WRITE: TLSv1 Handshake, length = 48
main, waiting for close_notify or alert: state 3
main, Exception while waiting for close java.net.SocketException: Software caused connection abort: recv failed
main, handling exception: java.net.SocketException: Software caused connection abort: recv failed
%% Invalidated:  [Session-3, TLS_RSA_WITH_AES_128_CBC_SHA]
main, SEND TLSv1 ALERT:  fatal, description = …
Run Code Online (Sandbox Code Playgroud)

java ssl bouncycastle jsse ssl-certificate

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

为什么JSF保存组件树状态?

托管bean状态和组件树状态之间似乎存在差异.您可以使用@RequestScoped@SessionScoped等注释来控制托管bean状态,但似乎您无法选择是否保存组件树状态(尽管您可以选择是否保存在服务器或客户端上) ).

似乎只有在单个请求的持续时间内才需要组件树状态作为临时数据结构来帮助处理请求.它应该从头开始为每个请求重建.使用JSF 2.0,部分状态保存使情况更好,因为只保存表单数据,但我不明白为什么甚至从前一个请求中形成数据是有用的.

如果您的应用程序仅使用请求范围托管bean,那么在请求之间保存组件树状态尤其没有意义.即使您的应用程序具有会话范围托管bean,我也会假设托管bean将保持状态,组件树仍然不需要在请求之间具有任何状态.

jsf jsf-2 state-saving

24
推荐指数
2
解决办法
9566
查看次数

何时使用NavigationHandler.handleNavigation vs ExternalContext.redirect/dispatch

似乎以下是等价的:

FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation("/index.xhtml?faces-redirect=true");

FacesContext.getCurrentInstance().getExternalContext().redirect("/testapp/faces/index.xhtml");
Run Code Online (Sandbox Code Playgroud)

是否有任何差异,何时应该使用?

navigation jsf redirect jsf-2

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

javax.ejb.EJBException:在非接口视图上非法的非业务方法访问

我在GlassFish 3.1.1上使用EclipseLink,我试图理解这个异常:

javax.ejb.EJBException: Illegal non-business method access on no-interface view
    at org.mycompany.myproject.session.__EJB31_Generated__MyBeanFacade__Intf____Bean__.getEntityManager(Unknown Source)
    at org.mycompany.myproject.session.AbstractFacade.edit(AbstractFacade.java:28)
    at org.mycompany.myproject.controller.EditMyBeanServlet.doPost(EditMyBeanServlet.java:199)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
Run Code Online (Sandbox Code Playgroud)

请注意,堆栈跟踪表明在Netbeans生成的AbstractFacade.getEntityManager方法中触发了问题.

知道发生了什么事或者有任何排除故障的提示吗?我猜测,当发生这种情况时,EJB中的事务或缓存状态都很奇怪,因为有时调用edit方法可以正常工作.我从Servlet调用EJB方法.尝试将更改保存到实体时发生异常.

servlets ejb jpa eclipselink

14
推荐指数
2
解决办法
8708
查看次数

c:out嵌套的内部元素属性

嵌套ac:out元素属性中的JSTL标记是一个好习惯还是使用c:out的var属性通常是首选的?它似乎工作在任何一种方式,但我怀疑嵌套它可能无法在某些应用程序服务器或JSP版本中工作(它只是看起来不对).

例如,一个输入元素,其值在验证失败时恢复,并具有特殊字符转义:

<input type="text" name="firstname" value="<c:out value="${param.firstname}"/>"/>
Run Code Online (Sandbox Code Playgroud)

与:

<c:out value="${param.firstname}" var="firstname"/>
<input type="text" name="firstname" value="${firstname}"/>
Run Code Online (Sandbox Code Playgroud)

java jsp jstl

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

JPA中的Oracle Text Criteria Query

是否可以使用Oracle Text的contains语句执行JPA Criteria Query,如果是,如何执行?

jpa oracle-text criteria-api

6
推荐指数
2
解决办法
3338
查看次数

getSingleResult在hibernate中返回本机标量查询的代理

我正在努力将我的JPA持久性提供程序从EclipseLink 2.3切换到Hibernate 3.6.5.Final.问题在于本机查询.注意:这不是EclipseLink的问题.我正在尝试String从我没有声明实体的表中获取标量值.这是代码:

Query q = em.createNativeQuery("select description from foo where foo_id = ?");
q.setParameter(1, fooId);
String description = (String)q.getSingleResult();
Run Code Online (Sandbox Code Playgroud)

使用Hibernate我得到一个ClassCastException因为返回的对象实际上是一个代理对象.我不知道它是什么类型,但我知道它不是一个数组(object.getClass().isArray()是假的),我知道它不是一个List(object instanceof Listfalse).

我错过了什么?

java hibernate jpa

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

使用客户端证书进行SSL重新协商会导致服务器缓冲区溢出

我编写了一个Java客户端应用程序,它使用客户端证书通过HTTPS连接到Apache Web服务器,并对服务器执行文件的HTTP PUT.它适用于小文件,但与大文件崩溃.

Apache服务器日志显示以下内容:

...
OpenSSL: Handshake: done
...
Changed client verification type will force renegotiation
...
filling buffer, max size 131072 bytes
...
request body exceeds maximum size (131072) for SSL buffer
could not buffer message body to allow SSL renegotiation to proceed
...    
OpenSSL: I/O error, 5 bytes expected to read on BIO
(104)Connection reset by peer: SSL input filter read failed.
(32)Broken pipe: core_output_filter: writing data to the network
Connection closed to child 20 with standard shutdown …
Run Code Online (Sandbox Code Playgroud)

java apache ssl jsse

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

CDI SessionScoped Bean在同一会话中产生两个实例

我有两个SessionScoped CDI bean实例用于同一个会话.我的印象是CDI会为我生成一个实例,但它产生了两个.我误解了CDI是如何工作的,还是我发现了一个错误?

这是bean代码:

package org.mycompany.myproject.session;

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.servlet.http.HttpSession;

@Named @SessionScoped public class MyBean implements Serializable {
    private String myField = null;

    public MyBean() {
        System.out.println("MyBean constructor called");

        FacesContext fc = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession)fc.getExternalContext().getSession(false);
        String sessionId = session.getId();
        System.out.println("Session ID: " + sessionId);
    }

    public String getMyField() {
        return myField;
    }

    public void setMyField(String myField) {
        this.myField = myField;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是Facelet代码:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML …
Run Code Online (Sandbox Code Playgroud)

jsf cdi

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

JoinTable上的JPA Criteria Subquery

如何创建有效的JPA Criteria查询以仅在连接表中存在实体列表时才选择实体列表?例如,请使用以下三个表:

create table user (user_id int, lastname varchar(64));
create table workgroup (workgroup_id int, name varchar(64));
create table user_workgroup (user_id int, workgroup_id int); -- Join Table
Run Code Online (Sandbox Code Playgroud)

有问题的查询(我想要JPA生成的)是:

select * from user where user_id in (select user_id from user_workgroup where workgroup_id = ?);
Run Code Online (Sandbox Code Playgroud)

以下Criteria查询将产生类似的结果,但有两个连接:

    CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
    CriteriaQuery<User> cq = cb.createQuery(User.class);
    Root<User> root = cq.from(User.class);
    cq.select(root);

    Subquery<Long> subquery = cq.subquery(Long.class);
    Root<User> subroot = subquery.from(User.class);
    subquery.select(subroot.<Long>get("userId"));
    Join<User, Workgroup> workgroupList = subroot.join("workgroupList");
    subquery.where(cb.equal(workgroupList.get("workgroupId"), ?));
    cq.where(cb.in(root.get("userId")).value(subquery));

    getEntityManager().createQuery(cq).getResultList();
Run Code Online (Sandbox Code Playgroud)

基本问题似乎是我正在为USER_WORKGROUP连接表使用@JoinTable注释而不是为连接表使用单独的@Entity,所以我似乎不能在条件查询中使用USER_WORKGROUP作为Root.

这是实体类:

@Entity
public class User …
Run Code Online (Sandbox Code Playgroud)

jpa criteria-api

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

如何通过asadmin接口监视GlassFish线程池

我正在尝试使用asadmin接口来监视GlassFish 3.1.1上的线程池.我正在执行以下命令:

asadmin get -m server.network.my-listener.thread-pool.*
Run Code Online (Sandbox Code Playgroud)

我正在获取数据,但大多数都有lastsampletime = -1(因此相关数据为零;并且没有价值).

注意:我也尝试过REST接口,我相信asadmin委托给它,以及JMX接口.同样的问题:大部分数据都有lastsampletime = -1.

我已经将所有模块的监控转为HIGH.我错过了什么?

monitoring glassfish

4
推荐指数
2
解决办法
9357
查看次数

使用 asadmin 重新加载 GlassFish 应用程序

是否可以使用 asadmin 命令行工具在 GlassFish 4 中重新加载 Web 应用程序?GlassFish Web 控制台有一个“重新加载”按钮,您可以按下该按钮来执行此操作。有与 asadmin 相当的吗?我知道有动态重新加载,您可以更改文件并重新加载,但我刚刚部署了一个战争文件,现在想要重新加载它,以便它重新连接到外部套接字服务器(没有代码发生变化,因为这是一场战争我不认为有一个文件可以触摸 - 此外我已经禁用了生产服务器上的动态重新加载)。如果我使用“重新部署”也可以,但是您必须指定一个战争文件,这很烦人,因为这意味着我必须将一个战争文件留在固定位置并确保它与实际部署的内容同步。

glassfish

4
推荐指数
1
解决办法
6791
查看次数