Baru-baru ini saya memutakhirkan server kucing jantan saya dari versi 6.x ke versi 7.x terbaru.
Saya datang dengan sedikit kesulitan, berharap mendapatkan bantuan.
Saya memiliki aplikasi panggilan MyApp
Pada tomcat6, ketika saya pergi ke http://www.example.com/MyApp/page/ saya biasanya akan mendapatkan hasil yang diinginkan.
Sekarang, pada tomcat7, mengunjungi url yang persis sama (dengan trailing slash) Saya mendapatkan kesalahan: "Sumberdaya tidak tersedia", karena tomcat berpikir bahwa / MyApp / page / adalah nama webapp keseluruhan alih-alih nama permintaan halaman di bawah aplikasi web MyApp.
Saya memerlukan garis miring pada akhir url saya karena jika tidak, saya mendapatkan kesalahan: "Status HTTP 405 - Metode permintaan 'GET' tidak didukung" yang OK karena saya benar-benar tidak mengizinkan metode GET ke permintaan "halaman" .
Jika seseorang tahu bagaimana cara memberitahu tomcat bahwa trailing slash demi path dari webapp yang ada seharusnya tidak seharusnya mengarahkannya ke webapp baru memanggil seluruh "string" dan hanya memproses permintaan seperti pada tomcat6, itu akan bagus!
web.xml
yang dipetakan/*
? Kalau tidak, kucing jantan menggunakan daftar file selamat datang. Biasanya hanya segmen jalur pertama yang interpredet sebagai root konteks. Jadi tidak menemukan webapp Anda sepertinya tidak menjadi masalah.MyApp
maka tomcat akan menggunakan konteks aplikasi web ini menggunakan jalur yang tersisapage/
. Jika tidak, itu akan mencariROOT
konteksnya, menggunakan path lengkap untuk pencarian.Jawaban:
Pertanyaan kuno, tetapi karena saya baru-baru ini bertarung dengan garis miring di Tomcat 8, saya tahu bahwa masalah dengan garis miring terus mengganggu dunia pengguna Tomcat. :-)
Apa yang mungkin Anda temui adalah perubahan dalam cara Tomcat menangani pengalihan saat memuat konteks root. Lihat bug 58660 dan baca beberapa diskusi pengembang di sana. Anda mungkin perlu mematikan mapper default dengan memodifikasi
mapperContextRootRedirectEnabled
atributContext
elemen diconf/context.xml
.sumber
Periksa selamat datang-file-daftar Anda .. yang berikut adalah spekulasi ...
Saya percaya inti masalah adalah ketika Tomcat disajikan dengan / - Ini memiliki beberapa pilihan - Iterate atas daftar file selamat datang - Tidak ada apa-apa di sana - tampilkan daftar direktori (jika diaktifkan)
Di sinilah kesenangan dimulai ... Banyak orang ingin menggunakan *. Lakukan untuk hal-hal seperti struts. Jadi mereka ingin index.do menjadi beranda. Atau juga umum adalah index.jsp di mana * .jsp dipetakan ke JspServlet.
Di sinilah semuanya menjadi menyenangkan. Jadi misalkan file selamat datang Anda adalah index.jsp, index.do.
Apa yang dilakukan Tomcat (IIRC) adalah pertama kali mengulangi daftar file selamat datang untuk mencari sumber daya dari nama itu.
Maka itu akan melakukan pass kedua mencari pemetaan yang cocok. Jadi jika index.jsp ditentukan dalam daftar selamat datang dan * .jsp dipetakan. Kemudian tomcat akan mencoba meneruskan ke index.jsp dan Anda akan mendapatkan 404.
Jadi saya akan menebak Anda memiliki pemetaan servlet dan menyambut file yang tumpang tindih. Dan perilaku servlet itu tidak mendukung GET. (Karena 405)
sumber
Jika proyek Anda menggunakan modul web dinamis v2.2, Anda harus secara eksplisit membuat setidaknya satu file (dapat berupa file html kosong) yang ada di web.xml (mis .: index.html) di konten Web Anda.
sumber