1
呼叫
我在這裏嘗試以下操作: 我有調用遠程EJB web應用:Glassfish的3.1.2 - 遠程EJB - 通過參考
@WebServlet("/token")
@SuppressWarnings("serial")
public class TokenServlet extends HttpServlet {
@EJB
private TokenService tokenService;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Token token = tokenService.getToken();
tokenService.setToken(token);
}
}
服務EJB:
@Stateless
@Remote
public class TokenServiceImpl implements TokenService {
private Token token = new Token();
@Override
public Token getToken() {
System.out.println("class: " + TokenServiceImpl.class
+ ", method: getToken() - " + "token value: '"
+ token.getToken() + "' reference: " + this.token);
return this.token;
}
@Override
public void setToken(Token token) {
boolean referenceEquality = this.token == token;
boolean valueEquality = this.token.equals(token);
System.out.println("class " + TokenServiceImpl.class
+ ", methos: setToken(Token token)");
System.out.println("test for reference equality: " + " " + this.token
+ " == " + token + " --> " + referenceEquality);
System.out.println("test for value equality: " + " " + this.token
+ " equals " + token + " --> " + valueEquality);
this.token = token;
}
webproject(.war)和ejbproject(.ear)分別部署在glassfish-application.xml條目中:
<!DOCTYPE glassfish-application PUBLIC "-//GlassFish.org//DTD
GlassFish Application Server 3.1 Java EE Application 6.0//EN"
"http://glassfish.org/dtds/glassfish-application_6_0-1.dtd">
<glassfish-application>
<pass-by-reference>true</pass-by-reference>
</glassfish-application>
class: class TokenServiceImpl, method: getToken() - token value: '
'default token value' reference: [email protected]|#]
class TokenServiceImpl, method: setToken(Token token)|#]
test for reference equality: [email protected] == [email protected] --> false|#]
test for value equality: [email protected] equals [email protected] --> false|#]
是不是有什麼不對或者不能使用遠程EJB的引用調用?