HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks
           

          代碼下載 http://www.aygfsteel.com/Files/zhaochengming/tomcat.rar

          1.       tomcatmanager添加一個Filter

          manager路徑為tomcat/server/webapps/manager

          package com;

          import java.io.IOException;

          import java.io.ObjectInputStream;

          import java.io.ObjectOutputStream;

          import java.net.URL;

          import java.net.URLConnection;

          import java.util.ArrayList;

          import java.util.List;

          import javax.servlet.Filter;

          import javax.servlet.FilterChain;

          import javax.servlet.FilterConfig;

          import javax.servlet.ServletException;

          import javax.servlet.ServletRequest;

          import javax.servlet.ServletResponse;

          public class SecuritFilter implements Filter{

                 private FilterConfig config = null;

                 public void destroy() {

                        this.config = null;           

                 }

                 public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

                        try {

                               //獲得驗證信息

                               Object obj = doBackCheck(arg0,arg1);

                               if (obj.equals(true))

                                      arg2.doFilter(arg0, arg1);

                               else

                                      System.out.println(obj);

                        } catch (Exception e) {

                               e.printStackTrace();

                        }

                 }

                 public void init(FilterConfig arg0) throws ServletException {

                        this.config = arg0;          

                 }

                 private Object doBackCheck( ServletRequest arg0, ServletResponse arg1 ) throws Exception {

                        //獲得傳過來的key

                        String key = arg0.getParameter("key");

                        //回調的路徑

                        String backURL = arg0.getParameter("backURL");

                        URL url = new URL(backURL);

                        URLConnection con = url.openConnection();

                        con.setUseCaches(true);

                        con.setDoOutput(true);

                        con.setDoInput(true);

                        con.setRequestProperty("Content-type", "application/octest-stream");

                        con.setRequestProperty("Content-length", "" + -1);

                        ObjectOutputStream dataout = new ObjectOutputStream(con.getOutputStream());

                        List<Object> list = new ArrayList<Object>();

                        list.add("checkSecurityNo");

                        list.add(key);

                        dataout.writeObject(list);

                        dataout.flush();

                        dataout.close();

                        ObjectInputStream in = new ObjectInputStream(con.getInputStream());

                        Object obj = in.readObject();

                        in.close();

                        return obj;

                 }

          }

          2.      修改managerweb.xml

          <?xml version="1.0" encoding="ISO-8859-1"?>

          <!--

           Licensed to the Apache Software Foundation (ASF) under one or more

           contributor license agreements. See the NOTICE file distributed with

           this work for additional information regarding copyright ownership.

           The ASF licenses this file to You under the Apache License, Version 2.0

           (the "License"); you may not use this file except in compliance with

           the License. You may obtain a copy of the License at

                http://www.apache.org/licenses/LICENSE-2.0

           Unless required by applicable law or agreed to in writing, software

           distributed under the License is distributed on an "AS IS" BASIS,

           WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

           See the License for the specific language governing permissions and

           limitations under the License.

          -->

          <web-app xmlns="http://java.sun.com/xml/ns/j2ee"

              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

              version="2.4">

           <display-name>Tomcat Manager Application</display-name>

           <description>

              A scriptable management web application for the Tomcat Web Server;

                 Manager lets you view, load/unload/etc particular web applications.

           </description>

           <filter>

                  <filter-name>SecurityFilter</filter-name>

                  <filter-class>com.SecuritFilter</filter-class>

           </filter>

           <filter-mapping>

                  <filter-name>SecurityFilter</filter-name>

                  <url-pattern>/*</url-pattern>

           </filter-mapping>

           <!-- Define the Manager Servlet

                 Change servlet-class to: org.apache.catalina.servlets.HTMLManagerServlet

                 to get a Servlet with a more intuitive HTML interface, don't change if you

                 have software that is expected to parse the output from ManagerServlet

                 since they're not compatible.

             -->

           <servlet>

              <servlet-name>Manager</servlet-name>

              <servlet-class>org.apache.catalina.manager.ManagerServlet</servlet-class>

              <init-param>

                <param-name>debug</param-name>

                <param-value>2</param-value>

              </init-param>

           </servlet>

           <servlet>

              <servlet-name>HTMLManager</servlet-name>

              <servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>

              <init-param>

                <param-name>debug</param-name>

                <param-value>2</param-value>

              </init-param>

           </servlet>

           <servlet>

              <servlet-name>Status</servlet-name>

              <servlet-class>org.apache.catalina.manager.StatusManagerServlet</servlet-class>

              <init-param>

                <param-name>debug</param-name>

                <param-value>0</param-value>

              </init-param>

           </servlet>

           <servlet>

              <servlet-name>JMXProxy</servlet-name>

              <servlet-class>org.apache.catalina.manager.JMXProxyServlet</servlet-class>

           </servlet>

           <!-- Define the Manager Servlet Mapping -->

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/list</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/sessions</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/start</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/stop</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/install</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/remove</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/deploy</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/undeploy</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/reload</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/save</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/serverinfo</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/roles</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Manager</servlet-name>

                <url-pattern>/resources</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>Status</servlet-name>

              <url-pattern>/status/*</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>JMXProxy</servlet-name>

                <url-pattern>/jmxproxy/*</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>HTMLManager</servlet-name>

              <url-pattern>/html/*</url-pattern>

           </servlet-mapping>

           <!-- Define reference to the user database for looking up roles -->

           <resource-env-ref>

              <description>

                Link to the UserDatabase instance from which we request lists of

                defined role names. Typically, this will be connected to the global

                user database with a ResourceLink element in server.xml or the context

                configuration file for the Manager web application.

              </description>

              <resource-env-ref-name>users</resource-env-ref-name>

              <resource-env-ref-type>

                org.apache.catalina.UserDatabase

              </resource-env-ref-type>

           </resource-env-ref>

          </web-app>

          3.      建立一個web項目tomcat

          添加1個驗證的CheckServlet

          添加1個調用managerServletA

          publicclass CheckServlet extends HttpServlet {

              privatestaticfinallongserialVersionUID = 1L;

              @Override

              protectedvoid service(HttpServletRequest request,

                     HttpServletResponse response) throws ServletException, IOException {

                  ObjectInputStream ois = new ObjectInputStream(request.getInputStream());

                  response.setContentType("application/octest-stream");

                  ByteArrayOutputStream baos = new ByteArrayOutputStream();

                  ObjectOutputStream out = new ObjectOutputStream(baos);

                 try {

                     out.writeObject(getResult((List) ois.readObject()));

                 } catch (Exception e) {

                     e.printStackTrace();

                     out.writeObject(null);

                 }

                 byte buf[] = baos.toByteArray();

                  response.setContentLength(buf.length);

                  ServletOutputStream servletout = response.getOutputStream();

                  servletout.write(buf);

                  servletout.close();

              }

             

              private Object getResult(List list) throws Exception {

                  String act = (String)list.get(0);

                 //如果是驗證安全信息

                 if (act.equalsIgnoreCase("checkSecurityNo")) {

                     String sercurityNo = (String)list.get(1);

                     if (sercurityNo.equals(ServletA.SECURITY_NO))

                         returnnew Boolean(true);

                     else

                         returnnew Boolean(false);

                 }

                  returnnull;

              }

          }

          publicclass ServletA extends HttpServlet {

             

              publicstatic String SECURITY_NO = UUID.randomUUID().toString();

              public ServletA() {

                  super();

              }

              publicvoid destroy() {

                  super.destroy();

              }

              publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

                  String url = request.getRequestURL().toString();

                  String projectName = request.getRequestURI().split("/")[1];

                  String serveltName = this.getServletName();

                  String serverHost = url.split(projectName)[0];

                  String act = request.getParameter("act");

                 if (act.equals("reload") || act.equals("stop")) {

                     this.SECURITY_NO = UUID.randomUUID().toString();

                     url = serverHost+"/manager/"+act+"?path=/"+projectName;

                     url += "&backURL="+URLEncoder.encode(serverHost+"/"+projectName+"/CheckServlet", "utf-8");

                     url += "&key="+this.SECURITY_NO;

                     URL u = new URL(url);

                     URLConnection con = u.openConnection();

                     InputStream is = con.getInputStream();

                     is.close();

                 }

              }

              publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

                  response.setContentType("text/html");

                  PrintWriter out = response.getWriter();

                 out

                         .println("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">");

                  out.println("<HTML>");

                  out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");

                  out.println(" <BODY>");

                  out.print("    This is ");

                  out.print(this.getClass());

                  out.println(", using the POST method");

                  out.println(" </BODY>");

                  out.println("</HTML>");

                  out.flush();

                  out.close();

              }

              publicvoid init() throws ServletException {

              }

          }

          4. 調用的時候訪問/tomcat/Servlet?act=reload

          SecurityFilter的時候在managerWEB-INF下建立一個classes文件夾,把這個文件保存為classes/com/SecurityFilter.class就可以了

           



          </script>

          posted on 2007-09-12 17:36 helloworld2008 閱讀(2856) 評論(2)  編輯  收藏 所屬分類: java

          評論

          # re: 程序調用tomcat的manager功能 重新啟動Tomcat的項目 2009-08-18 14:07 網友
          非常好,謝謝  回復  更多評論
            

          # re: 程序調用tomcat的manager功能 重新啟動Tomcat的項目 2009-09-08 11:11 阿桂
          filter配置好后,重啟tomcat,登錄manager/html時報錯啊  回復  更多評論
            

          主站蜘蛛池模板: 衢州市| 峨眉山市| 江达县| 时尚| 万山特区| 大同县| 芜湖县| 石台县| 新化县| 资兴市| 麟游县| 阳春市| 永嘉县| 双峰县| 友谊县| 交口县| 乌恰县| 沂南县| 东丽区| 洛隆县| 吉安市| 牙克石市| 无锡市| 阿拉尔市| 乐清市| 秀山| 来安县| 星座| 成武县| 霍城县| 金华市| 务川| 恩平市| 隆化县| 东港市| 横峰县| 黄冈市| 绥芬河市| 平舆县| 郑州市| 浮山县|