1
2
3
4 package com.acme;
5
6 import java.io.IOException;
7
8 import javax.naming.InitialContext;
9 import javax.servlet.ServletConfig;
10 import javax.servlet.ServletException;
11 import javax.servlet.ServletOutputStream;
12 import javax.servlet.http.HttpServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 import javax.sql.DataSource;
16 import javax.transaction.UserTransaction;
17 import javax.annotation.Resource;
18 import javax.annotation.PostConstruct;
19 import javax.annotation.PreDestroy;
20 import javax.annotation.security.RunAs;
21
22
23
24
25
26
27
28
29
30
31
32 @RunAs("special")
33 public class AnnotationTest extends HttpServlet
34 {
35 private String postConstructResult = "";
36 private String dsResult = "";
37 private String envResult = "";
38 private String envLookupResult = "";
39 private String envResult2 ="";
40 private String envLookupResult2 = "";
41 private String envResult3 = "";
42 private String envLookupResult3 = "";
43 private String dsLookupResult = "";
44 private String txResult = "";
45 private String txLookupResult = "";
46 private DataSource myDS;
47
48 @Resource(mappedName="UserTransaction")
49 private UserTransaction myUserTransaction;
50
51
52 @Resource(mappedName="maxAmount")
53 private Double maxAmount;
54
55 @Resource(name="someAmount")
56 private Double minAmount;
57
58 @Resource
59 private Double avgAmount;
60
61
62 @Resource(mappedName="jdbc/mydatasource")
63 public void setMyDatasource(DataSource ds)
64 {
65 myDS=ds;
66 }
67
68
69 @PostConstruct
70 private void myPostConstructMethod ()
71 {
72 postConstructResult = "Called";
73 try
74 {
75 dsResult = (myDS==null?"FAIL":"myDS="+myDS.toString());
76 }
77 catch (Exception e)
78 {
79 dsResult = "FAIL: "+e;
80 }
81
82
83 envResult = (maxAmount==null?"FAIL":"maxAmount="+maxAmount.toString());
84
85 try
86 {
87 InitialContext ic = new InitialContext();
88 envLookupResult = "java:comp/env/com.acme.AnnotationTest/maxAmount="+ic.lookup("java:comp/env/com.acme.AnnotationTest/maxAmount");
89 }
90 catch (Exception e)
91 {
92 envLookupResult = "FAIL: "+e;
93 }
94
95 envResult2 = (minAmount==null?"FAIL":"minAmount="+minAmount.toString());
96 try
97 {
98 InitialContext ic = new InitialContext();
99 envLookupResult2 = "java:comp/env/someAmount="+ic.lookup("java:comp/env/someAmount");
100 }
101 catch (Exception e)
102 {
103 envLookupResult2 = "FAIL: "+e;
104 }
105 envResult3 = (minAmount==null?"FAIL":"avgAmount="+avgAmount.toString());
106 try
107 {
108 InitialContext ic = new InitialContext();
109 envLookupResult3 = "java:comp/env/com.acme.AnnotationTest/avgAmount="+ic.lookup("java:comp/env/com.acme.AnnotationTest/avgAmount");
110 }
111 catch (Exception e)
112 {
113 envLookupResult3 = "FAIL: "+e;
114 }
115
116
117
118 try
119 {
120 InitialContext ic = new InitialContext();
121 dsLookupResult = "java:comp/env/com.acme.AnnotationTest/myDatasource="+ic.lookup("java:comp/env/com.acme.AnnotationTest/myDatasource");
122 }
123 catch (Exception e)
124 {
125 dsLookupResult = "FAIL: "+e;
126 }
127
128 txResult = (myUserTransaction==null?"FAIL":"myUserTransaction="+myUserTransaction);
129 try
130 {
131 InitialContext ic = new InitialContext();
132 txLookupResult = "java:comp/env/com.acme.AnnotationTest/myUserTransaction="+ic.lookup("java:comp/env/com.acme.AnnotationTest/myUserTransaction");
133 }
134 catch (Exception e)
135 {
136 txLookupResult = "FAIL: "+e;
137 }
138 }
139
140 @PreDestroy
141 private void myPreDestroyMethod()
142 {
143 System.err.println("PreDestroy called");
144 }
145
146 public void init(ServletConfig config) throws ServletException
147 {
148 super.init(config);
149 }
150
151
152
153
154 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
155 {
156 doGet(request, response);
157 }
158
159
160 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
161 {
162 try
163 {
164 response.setContentType("text/html");
165 ServletOutputStream out = response.getOutputStream();
166 out.println("<html>");
167 out.println("<h1>Jetty6 Annotation Results</h1>");
168 out.println("<body>");
169
170 out.println("<h2>@PostConstruct Callback</h2>");
171 out.println("<pre>");
172 out.println("@PostConstruct");
173 out.println("private void myPostConstructMethod ()");
174 out.println("{}");
175 out.println("</pre>");
176 out.println("<br/><b>Result: "+postConstructResult+"</b>");
177
178
179 out.println("<h2>@Resource Injection for DataSource</h2>");
180 out.println("<pre>");
181 out.println("@Resource(mappedName=\"jdbc/mydatasource\");");
182 out.println("public void setMyDatasource(DataSource ds)");
183 out.println("{");
184 out.println("myDS=ds;");
185 out.println("}");
186 out.println("</pre>");
187 out.println("<br/><b>Result: "+dsResult+"</b>");
188 out.println("<br/><b>JNDI Lookup Result: "+dsLookupResult+"</b>");
189
190
191 out.println("<h2>@Resource Injection for env-entry </h2>");
192 out.println("<pre>");
193 out.println("@Resource(mappedName=\"maxAmount\")");
194 out.println("private Double maxAmount;");
195 out.println("@Resource(name=\"minAmount\")");
196 out.println("private Double minAmount;");
197 out.println("</pre>");
198 out.println("<br/><b>Result: "+envResult+": "+(maxAmount.compareTo(new Double(55))==0?" PASS":" FAIL")+"</b>");
199 out.println("<br/><b>JNDI Lookup Result: "+envLookupResult+"</b>");
200 out.println("<br/><b>Result: "+envResult2+": "+(minAmount.compareTo(new Double("0.99"))==0?" PASS":" FAIL")+"</b>");
201 out.println("<br/><b>JNDI Lookup Result: "+envLookupResult2+"</b>");
202 out.println("<br/><b>Result: "+envResult3+": "+(avgAmount.compareTo(new Double("1.25"))==0?" PASS":" FAIL")+"</b>");
203 out.println("<br/><b>JNDI Lookup Result: "+envLookupResult3+"</b>");
204
205 out.println("<h2>@Resource Injection for UserTransaction </h2>");
206 out.println("<pre>");
207 out.println("@Resource(mappedName=\"UserTransaction\")");
208 out.println("private UserTransaction myUserTransaction;");
209 out.println("</pre>");
210 out.println("<br/><b>Result: "+txResult+"</b>");
211 out.println("<br/><b>JNDI Lookup Result: "+txLookupResult+"</b>");
212
213 out.println("<h2>@RunAs</h2>");
214 boolean result = request.isUserInRole("special");
215 out.println("<br/><b>Result: isUserInRole(\"special\")="+result+":"+(result==true?" PASS":" FAIL")+"</b>");
216 result = request.isUserInRole("other");
217 out.println("<br/><b>Result: isUserInRole(\"other\")="+result+":"+ (result==false?" PASS":" FAIL")+"</b>");
218
219
220 out.println("</body>");
221 out.println("</html>");
222 out.flush();
223 }
224 catch (Exception e)
225 {
226 throw new ServletException(e);
227 }
228 }
229
230
231
232
233 }