小编kol*_*sus的帖子

Spring单例bean是线程安全的吗?

我想知道Spring单例bean是否是线程安全的,如果是,那么为什么,如果不是那么为什么呢?

因为我是春天的初学者,所以请帮助.

java spring spring-mvc

26
推荐指数
4
解决办法
5万
查看次数

何时使用preRenderView与viewAction?

什么时候应该使用preRenderView事件来初始化页面的数据而不是使用viewAction?它们在使用上是否相同,是否具有相同的效果?

preRenderView事件

<f:metadata>
  <f:event type="preRenderView" listener="#{myBean.initialize}"/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

要么

的viewAction

<f:metadata>
  <f:viewAction action="#{myBean.initialize}"/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

jsf-2 prerenderview jsf-2.2

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

链接的ViewScoped bean导致内存泄漏

在JBoss 7.1.1上的JavaEE6项目(EJB3,JSF2)中,似乎我们有@ViewScoped bean的内存泄漏.最后一天,我花时间在这个问题调查上.所以我创建了两个页面的简单项目,以保证在第一页离开@ViewScoped bean之后将被释放.

<context-param>  //web.xml
   <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
   <param-value>server</param-value>
</context-param>
<context-param>
   <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
   <param-value>false</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

TreeBean.java

@ManagedBean
@ViewScoped
public class TreeBean implements Serializable {
 private TreeNode root;  
 public static AtomicInteger count = new AtomicInteger(0);

@Override
protected void finalize() throws Throwable {
    System.out.println("TreeBean beans count: " + count.decrementAndGet() + " (FINALISATION)");
}


public TreeBean() {  
    super();
    System.out.println("TreeBean beans count: " + count.incrementAndGet() + " (INITIALISATION)");
}  
Run Code Online (Sandbox Code Playgroud)

first.xhtml

  ....
  <h:form id="frm">
        <p:tree
            value="#{treeBean.root}"
            var="node"
            id="tree">
    ....
   <p:commandLink
            action="second.xhtml?faces-redirect=true"
            value="toSecond" />
    ....            
Run Code Online (Sandbox Code Playgroud)

second.xhtml

  ....
  <h:form …
Run Code Online (Sandbox Code Playgroud)

out-of-memory jsf-2 view-scope

9
推荐指数
1
解决办法
4267
查看次数

使用ProxySelector的Jax-WS Axis2 Proxy over SSL错误

在我的项目中,我有以下项目结构:

我有一个生成war文件的模块,可以部署在Tomcat应用程序服务器中.该模块依赖于Axis2库:

<dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-http</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-webapp</artifactId>
        <type>war</type>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

此类包含WEB-INF下conf文件夹中的axis2.xml文件.

现在这个模块依赖于一个单元模块,它具有jar的包类型.

现在在我的web模块中,在我的存根的代码中,我有以下代码:

.GazelleObjectValidator.getInstance()validateObject();

XcpdValidationService是jar模块(依赖项)中的一个类,此方法通过SSL调用外部Web服务并使用代理.

此Web服务客户端由JAX WS RI生成

但是这个类不使用父模块中的axis2.xml配置并使用它自己的轴配置,这是默认设置,我的代理没有配置...

@WebEndpoint(name = "GazelleObjectValidatorPort")
public GazelleObjectValidator getGazelleObjectValidatorPort() {
    return super.getPort(new QName("http://ws.validator.sch.gazelle.ihe.net/", "GazelleObjectValidatorPort"), GazelleObjectValidator.class);
}
Run Code Online (Sandbox Code Playgroud)

该方法本身如下所示:

@WebMethod
@WebResult(name = "validationResult", targetNamespace = "")
@RequestWrapper(localName = "validateObject", targetNamespace = "http://ws.validator.sch.gazelle.ihe.net/", className = "net.ihe.gazelle.schematron.ValidateObject")
@ResponseWrapper(localName = "validateObjectResponse", targetNamespace = "http://ws.validator.sch.gazelle.ihe.net/", className = "net.ihe.gazelle.schematron.ValidateObjectResponse")
public String validateObject(
    @WebParam(name = "base64ObjectToValidate", targetNamespace = "")
    String base64ObjectToValidate,
    @WebParam(name = "xmlReferencedStandard", targetNamespace = "") …
Run Code Online (Sandbox Code Playgroud)

ssl axis2 jax-ws java-ee apache-commons-httpclient

9
推荐指数
1
解决办法
563
查看次数

没有Web应用程序服务器的Java Web服务

我们有一个消息处理服务器,它

  • 开始几个线程
  • 处理邮件
  • 与数据库等交互......

现在,客户端希望在服务器上拥有Web服务服务器,他们将能够使用Web服务客户端查询消息处理服务器.例如,给我今天的所有消息,或删除带有id的消息....

问题是:

  • 服务器只是标准的j2se应用程序,不在应用程序服务器内运行,如tomcat或glassfish.
  • 要处理Http请求,我是否需要实现http服务器?
  • 我想使用漂亮的j2ee注释,如@webservice,@ webmothod等...是否有任何我可以使用的库或框架

tomcat web-services java-metro-framework jax-ws java-ee

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

JavaEE应用服务器中的CompletableFuture/parallelStream

鉴于新的Java8,我们为异步任务获得了非常好的功能,例如CompletableFuture和.paralellStream().如果你在Java SE中运行它,因为我已经理解它你将使用ForkJoinPool,但是如果我在例如Wildfly或TomcatEE中运行以下示例会发生什么?

//Here I start a comp.Future without giving an Executor
test = CompletableFuture.supplyAsync(() -> timeConsumingMethod());
//Here I start a parallel stream 
mList.paralell().filter(...).collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)

会发生什么,我将从哪里借用我的资源

  1. 这些示例在@Stateful bean中运行
  2. 这些示例在@Stateless bean中运行
  3. 这些示例在CDI bean中运行

java asynchronous java-ee java-ee-7 completable-future

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

是否有保证的方法来获取自定义soap处理程序中的操作名称?

我有一个自定义SOAP消息处理程序,用于传入消息,根据正在调用的操作运行不同的代码.我第一次尝试获取操作名称看起来像这样:

public boolean handleMessage(SOAPMessageContext context)
{
    String op = context.get(MessageContext.WSDL_OPERATION);
    ...
Run Code Online (Sandbox Code Playgroud)

此操作失败,因为该属性MessageContext.WSDL_OPERATION似乎永远不会被设置.然后我尝试使用这个:

public boolean handleMessage(SOAPMessageContext context)
{
    Map<?, ?> headers = (Map<?, ?>)context.get(MessageContext.HTTP_REQUEST_HEADERS);    
    ArrayList<String> SOAPAction = ((ArrayList<String>) headers.get("SOAPAction"));
    String opName = SOAPAction.get(0);
    //opName will be formatted like "urn#myOperation", so the prefix must be removed
    opName = ((opName.replace("\"","").split("#"))[1]);
Run Code Online (Sandbox Code Playgroud)

这有效,但我担心可能会出现标题属性"SOAPAction"未设置(或甚至不存在)的情况,或者没有我期望的值.我也有点担心,因为我不知道这是否是获取操作名称的"官方"方式 - 我通过查看context调试器中的内容来弄清楚它.

在处理传入的SOAP消息时,有没有更好的方法来获取操作名称?

java soap web-services jax-ws soaphandler

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

Oracle,Oracle中索引:: 1错误时缺少IN或OUT参数

您好我使用Netbeans 8.0.2和Oracle 11g Express Edition在JSF 2.2中编写了一个库管理系统.我有几个名为Books,Borrowers等的页面和一些在数据库中命名相同的表.我的问题是:在Borrowers中显示屏幕书ID.但是我想要达到具有相同身份的书籍.这是我的代码.

public List<Borrower> getBorrowers()throws ClassNotFoundException,SQLException, InstantiationException, IllegalAccessException{
    Class.forName("oracle.jdbc.driver.OracleDriver");
    con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","Alparslan-PC","123456");
    ps=con.prepareStatement("SELECT * FROM BORROWER");

    BookidPs = con.prepareStatement("SELECT TITLE FROM BOOK AND BORROWER WHERE ISBN=?");


    ResultSet rs=ps.executeQuery();
    ResultSet Rs2=BookidPs.executeQuery();
    List<Borrower> liste = new ArrayList<Borrower>();
    while(rs.next()){

        Borrower borrow = new Borrower();
        borrow.setId(rs.getBigDecimal("ID"));
        borrow.setName(rs.getString("NAME"));
        borrow.setSurname(rs.getString("SURNAME"));
        borrow.setAddress(rs.getString("ADDRESS"));
        borrow.setPhonenumber(rs.getString("PHONENUMBER"));
        borrow.setBorrowdate(rs.getString("BORROWDATE"));
        //book.setIsbn(rs.getString("BOOKID"))
        borrow.setBookid(Rs2.getString("BOOKID"));
        //borrow.setBookid(((Book) rs.getObject("BOOKID")).getIsbn());
        liste.add(borrow);
    }
    System.out.print(liste);
    return liste;
}
Run Code Online (Sandbox Code Playgroud)

如果第22行用borrow.setBookid(rs.getString("BOOKID"))更改; 显示了bookids.我写了另一个名为BookidPs的查询.如果我运行这个程序,我会在index :: 1错误时得到Missing IN或OUT参数.如果你帮助我会好意思.谢谢

java sql oracle oracle11g

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

将HTTP标头添加到JAX-WS服务响应

我正在开发一个Java Web服务.此时我可以获得Http头请求.但我想添加更多标头请求.

我目前正在servlet过滤器中这样做.

@WebFilter(urlPatterns = {"/*"})
public class AddHeader implements Filter {

    @Resource
    private WebServiceContext context;

    public AddHeader() {
    }

    @Override
    public void init(FilterConfig fConfig) throws ServletException {
    }

    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(
            ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        if (request.getContentLength() != -1 && context != null) {
            MessageContext mc = context.getMessageContext();
            ((HttpServletResponse) response).addHeader(
                    "Operation", "something"
            );
        }

        chain.doFilter(request, response);
    }
}
Run Code Online (Sandbox Code Playgroud)

此策略的问题是添加的标头是静态的.

使用SoapHandler类,我可以获得SOAP消息 - 动态:

public class SoapClass implements …
Run Code Online (Sandbox Code Playgroud)

java soap servlets jax-ws

7
推荐指数
1
解决办法
6927
查看次数

在primefaces数据表过滤器中设置默认值

我正在使用primefaces v3.5.在数据表中我在一列上使用过滤器.如何在加载页面时为过滤器设置默认值.

jsf primefaces jsf-2

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