You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2018/12/27 08:00:15 UTC

[2/3] tomee git commit: Add files via upload

Add files via upload

Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/8c6c4fcc
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/8c6c4fcc
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/8c6c4fcc

Branch: refs/heads/master
Commit: 8c6c4fccfaa7b4e3702a462de1f7271e917111fc
Parents: 3dc82cc
Author: puneethps <pu...@gmail.com>
Authored: Thu Dec 27 00:26:23 2018 +0530
Committer: GitHub <no...@github.com>
Committed: Thu Dec 27 00:26:23 2018 +0530

----------------------------------------------------------------------
 examples/cdi-session-scope/README.md | 122 ++++++++++++++++++++++++++++++
 1 file changed, 122 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8c6c4fcc/examples/cdi-session-scope/README.md
----------------------------------------------------------------------
diff --git a/examples/cdi-session-scope/README.md b/examples/cdi-session-scope/README.md
new file mode 100644
index 0000000..0b14fbe
--- /dev/null
+++ b/examples/cdi-session-scope/README.md
@@ -0,0 +1,122 @@
+index-group=Unrevised
+type=page
+status=unpublished
+title=CDI @SessionScoped
+~~~~~~
+
+This example show the use of `@SessionScoped` annotation for injected objects. An object
+which is defined as `@SessionScoped` is created once for every HTTPSession and is shared by all the
+beans that inject it throughout the same HTTPSession.
+
+##### Run the application:
+
+    mvn clean install tomee:run 
+	
+# Example
+
+This example has an end point wherein a user provides a request parameter 'name' which is persisted as a feild in a session scoped bean SessionBean and 
+then retrieved through another endpoint.
+
+#Request
+
+GET http://localhost:8080/cdi-session-scope-8.0.0-SNAPSHOT/set-name?name=Puneeth
+
+#Response
+
+done, go to /name servlet 
+
+#Request
+
+GET http://localhost:8080/cdi-session-scope-8.0.0-SNAPSHOT/name
+
+#Response
+
+name = {Puneeth} 
+ 
+##SessionBean
+
+The annotation @SessionScoped specifies that a bean is session scoped ie there will be only one instance of the class associated with a particular
+HTTPSession.  
+
+@SessionScoped
+public class SessionBean implements Serializable {
+
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}  
+
+##InputServlet
+
+InputServlet is a generic servlet which is mapped to the url pattern '/set-name'.
+The session scoped bean 'SessionBean' has been injected into this servlet, and the incoming request parameter is set to the feild name of the bean. 
+
+@WebServlet(name = "input-servlet", urlPatterns = {"/set-name"})
+public class InputServlet extends HttpServlet {
+
+    @Inject
+    private SessionBean bean;
+
+    @Override
+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        final String name = req.getParameter("name");
+        if (name == null || name.isEmpty()) {
+            resp.getWriter().write("please add a parameter name=xxx");
+        } else {
+            bean.setName(name);
+            resp.getWriter().write("done, go to /name servlet");
+        }
+
+    }
+}
+
+##AnswerBean
+
+AnswerBean is a request scoped bean with an injected 'SessionBean'. It has an postconstruct method wherein the value from the sessionBean is retrieved and set to a feild.
+
+public class AnswerBean {
+
+    @Inject
+    private SessionBean bean;
+
+    private String value;
+
+    @PostConstruct
+    public void init() {
+        value = '{' + bean.getName() + '}';
+    }
+
+    public String value() {
+        return value;
+    }
+}
+
+##OutputServlet
+
+OutputServlet is another servlet with  'AnswerBean' as an injected feild. When '/name' is called the value from 'Answerbean' is read and written to the response.
+
+@WebServlet(name = "output-servlet", urlPatterns = {"/name"})
+public class OutputServlet extends HttpServlet {
+
+    @Inject
+    private AnswerBean bean;
+
+    @Override
+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        final String name = bean.value();
+        if (name == null || name.isEmpty()) {
+            resp.getWriter().write("please go to servlet /set-name please");
+        } else {
+            resp.getWriter().write("name = " + name);
+        }
+    }
+}
+
+
+