관리 빈이 페이지 상태를 유지하고 모든 트랜잭션 항목을 EJB에 위임하므로 관리 빈 메서드가 아닌 웹 서비스로 노출 될 수있는 방법을 사용하는 것이 좋습니다. EJB 것들.
업데이트 :이 작품은 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
나는 그렇게하지만, 관리 빈 내에서 외부 프로그램을 호출하는 특정 경우에, 거기에 보통 것 및 호출자 메소드는 웹 서비스를 통해 액세스 할 수 있어야합니다. – fledglingCoder