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