You can override the jspInit() and jspDestroy() methods in a jsp, but you can't override the _jspService() method.
JSP.188.8.131.52 Protocol Seen by the JSP Page Author
In JSP 2.0 this is done by defining methods with the names jspInit and jspDestroy in a
declaration scripting element in the JSP page. The jspInit method, if present, will
be called to prepare the page before the first request is delivered. Similarly a JSP
container can reclaim resources used by a JSP page when a request is not being
serviced by the JSP page by invoking its jspDestroy method, if present.
A JSP page author may not (re)define servlet methods through a declaration
You should not be overriding the _jspService method - The real problem.
Your problem is out is not declared. Why that happens is that when the JSP page is translated the JSP translator creates a _jspService method and then it starts initializing some of the implicit objects. One of the objects it instantiates is out.
Here is a snippet from the java file created by Tomcat 5.5
Darryl Smith is right! all the implicit objects are available with in service method of jsp. in other word, you can use implicit object only with <% %> and <%= %>.
and it is not possible with declaration(<%! %>)