簡體   English   中英

如何使jsf @ManagedBean以及@WebService

[英]how to make a jsf @ManagedBean also a @WebService

我想簡單地通過在類定義上方添加@WebService批注並將@WebMethod批注添加到托管Bean方法中,從而使jsf托管Bean也成為Web服務。

這行不通,至少在Websphere上行不通。

因此,托管bean的方法通過調用注入的會話bean的方法進行一些EJB調用,因此,定義新的Web服務類並從其@WebMethods調用JSF托管bean的方法也不起作用。

有什么建議么?

我建議您使用一種方法,其中托管Bean僅保持頁面狀態,並且將所有事務性內容委派給EJB,因此您可以將Web公開的不是托管Bean方法,而是EJB公開為Web服務。

更新:這適用於TomEE + 1.6.0,這就是您想要的嗎?

package somepackage;
import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.jws.WebMethod;
import javax.jws.WebService;

@ManagedBean
@WebService
@ViewScoped
public class ManagedBeanAndWebService implements Serializable{

    private static final long   serialVersionUID    = 4479173603147480764L;
    private String someAttribute="xyz";

    public String getSomeAttribute() {
        return someAttribute;
    }

    public void setSomeAttribute(String someAttribute) {
        this.someAttribute = someAttribute;
    }

    @WebMethod(operationName="methodName")
    public void someWebMethod(String s){
        System.out.println(s);
    }
}

和xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:pe="http://primefaces.org/ui/extensions">
<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Test</title>
</h:head>
<h:body>

    <h:form id="form">
        <p:outputLabel value="#{managedBeanAndWebService.someAttribute}"/> 
    </h:form>
</h:body>
</html>

和WS

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM