it-swarm-id.com

Daftar webapps yang digunakan di Apache Tomcat

Saya perlu mendapatkan daftar aplikasi web yang dikerahkan di Apache Tomcat. Juga, untuk setiap webapp saya perlu mendapatkan daftar servlet dan JSP yang diinisialisasi. Adakah ide bagaimana ini bisa dilakukan?

Saya telah menemukan bahwa direktori \Tomcat\work\Catalina\localhost\ berisi direktori anak untuk setiap aplikasi web. Mungkinkah ada webapp lain yang digunakan yang tidak ada di sana?

22
galchen

Sedikit terlambat, tapi saya harap ini membantu.

Untuk mendapatkan daftar aplikasi yang dikerahkan di Tomcat, Anda perlu mengonfigurasi file xml dan melakukan perintah ikal sederhana: 

Konfigurasi Tomcat

Tambahkan ini di /.../.../Tomcat_HOME/conf/Tomcat-users.xml

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>

<user username="my_user" password="my_pass" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

Setelah itu, restart Tomcat

Daftar aplikasi menggunakan browser

Buka browser favorit Anda dan masukkan url ini:

http://some_ip:some_port/manager/text/list

Login akan muncul. Masukkan pengguna/kata sandi yang dikonfigurasikan di Tomcat_HOME/conf/Tomcat-users.xml Anda

Menggunakan baris perintah

Jalankan saja ini:

curl -v -u my_user:my_pass http://127.0.0.1:some_port/manager/text/list

Hasilnya harus:

OK - Listed applications for virtual Host localhost
/manager:running:0:manager
/:running:0:ROOT
/docs:running:0:docs
/examples:running:0:examples
/Host-manager:running:0:Host-manager
/my_app:running:0:my_app
/my_other_app:running:0:my_other_app
....
* Connection #0 to Host 127.0.0.1 left intact

Pendekatan terakhir ini digunakan oleh banyak plugin yang terkait dengan penyebaran Tomcat otomatis (Devops)

HTH

13
JRichardsz

Anda dapat melakukannya dengan menggunakan manajemen javax. Akan terlihat seperti

private Iterable<String> collectAllDeployedApps() {
    try {
        final Set<String> result = new HashSet<>();
        final Set<ObjectName> instances = findServer()
                .queryNames(new ObjectName("Tomcat:j2eeType=WebModule,*"), null);
        for (ObjectName each : instances) {
            result.add(substringAfterLast(each.getKeyProperty("name"), "/")); //it will be in format like //localhost/appname 
        }
        return result;
    } catch (MalformedObjectNameException e) {
         //handle
    }
}

private MBeanServer findServer() {
    ArrayList<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
    for (MBeanServer eachServer : servers) {
        for (String domain : eachServer.getDomains()) {
            if (domain.equals("Tomcat")) {
                return eachServer;
            }
        }
    }
    //handle. We are not in Tomcat.
}
9
Stan Kurilin

Kutipan manual: List_Currently_Deployed_Applications

http://localhost:8080/manager/text/list
4
tsohr

Saya tidak tahu bagaimana cara melakukannya. Tetapi ada aplikasi manajer dalam distribusi standar Tomcat, yang berisi daftar aplikasi yang digunakan. Sourcecode disediakan, sehingga Anda bisa melihatnya di sana.

Mengenai pertanyaan Anda tentang webapps lain: Ya, mungkin ada webapps lain, yang berada di direktori webapp. Mereka dapat ditentukan di server.xml.

3
Andreas

Cara terbaik yang saya temukan untuk informasi tentang aplikasi yang digunakan dan kontennya (termasuk servlet, file, koneksi, dan semacamnya) adalah menginstal Lambda Probe selain apa pun yang disajikan oleh layanan Tomcat.

1
0xCAFEBABE

Lihatlah manual Apache Tomcat . Bagian 5 adalah tentang aplikasi Manajer di Tomcat, yang melakukan hal itu.

0
SPee