หลายบริบทที่มีข้อผิดพลาดเส้นทางเดียวกันที่เรียกใช้บริการเว็บใน Eclipse โดยใช้ Tomcat


131

นี่เป็นข้อผิดพลาดที่ได้รับเมื่อสร้างเว็บเซอร์วิส Axis2 ตัวแรกโดยใช้ Eclipse หลังจากที่ฉันเขียนคลาสฉันได้สร้างบริการเว็บด้วย Apache Axis2 เมื่อฉันคลิกปุ่ม start server ใน eclipse จะมีข้อความแสดงข้อผิดพลาด:

ไม่สามารถเผยแพร่การกำหนดค่าเซิร์ฟเวอร์สำหรับ Tomcat v6.0 Server ที่ localhost
บริบทหลายรายการมีเส้นทางเป็น "/ FirstApache"

FirstApache เป็นโครงการเว็บแบบไดนามิกที่ฉันสร้างขึ้นก่อนหน้านี้ ฉันเลือกโครงการเว็บที่ถูกต้องจากส่วนการกำหนดค่าในตัวช่วยสร้างบริการเว็บ

ฉันจะแก้ไขปัญหานี้ได้อย่างไร?

คำตอบ:


276

ค้นหาserver.xmlไฟล์และตรวจสอบ<Context>แท็กของคุณอาจมีคำจำกัดความหลายคำสำหรับเส้นทางเดียวกัน ลบรายการที่ซ้ำกันออกและควรใช้งานได้สำหรับคุณ

ตรวจสอบคำตอบได้ที่นี่

จัดรูปแบบไฟล์ xml โดยอัตโนมัติ ( control+ shift+ f) เนื่องจาก<Context>แท็กที่สองอาจอยู่ในบรรทัดเดียวกัน แต่อยู่นอกวิวพอร์ตและอยู่ห่างจากแท็กที่มองเห็นได้มาก


13
คุณสามารถค้นหาไฟล์ server.xml ในพื้นที่ทำงาน \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ conf (เปลี่ยน tmp0 ในกรณีที่นี่ไม่ใช่เซิร์ฟเวอร์ดีฟอลต์ของ eclipse ของคุณ)
Repoker

ฉันพบปัญหานี้หลังจากที่ฉันสร้างสำเนาของโครงการเว็บแบบไดนามิกใน eclipse java ee และพยายามเรียกใช้ JSP ในสำเนาแทน ฉันจะแก้ไขปัญหานี้ได้อย่างไร?
Erran Morad

ควรได้รับการปกป้องเพื่อหลีกเลี่ยง "ขอบคุณ" ที่ไร้ประโยชน์อื่น ๆ การโหวตให้กับคำตอบนั้นดีกว่าการแสดงความคิดเห็นขอบคุณ
Dwhitz

ขอบคุณมันใช้งานได้ แต่ฉันสับสนว่าทำไมการทำซ้ำนี้จึงเกิดขึ้น?
Sandip S.

วิธีนี้ยังใช้งานได้ฉันใช้ Tomcat 8.5 ใน Eclipse V2018-12
Raymund Arthur

70

ใน STS / Eclipse ไปที่ "project explorer" หรือ "package explorer" และมีโฟลเดอร์ชื่อ "server" เปิดแล้วคุณจะพบserver.xmlไฟล์ ภายในไฟล์นี้ที่ด้านล่างคุณจะพบคำจำกัดความเช่น

<Context docBase="myproject" path="/myproject" reloadable="true"
   source="org.eclipse.jst.jee.server:myproject"/>

คุณอาจพบคำจำกัดความเดียวกันที่ซ้ำกันซึ่งคุณจะต้องลบออก


1
เพิ่มการลบเซิร์ฟเวอร์เพิ่มบรรทัดนี้อีกครั้งโดยอัตโนมัติ
Vinayak Shedgeri

หากแอปไม่เริ่มทำงานหลังจากนี้ให้ไปที่แท็บ "เซิร์ฟเวอร์" ถัดจากคอนโซลและลบโมดูลทั้งหมดที่อยู่ในเมนูแบบเลื่อนลงของชื่อเซิร์ฟเวอร์ รีรันโครงการหลังจากนี้
Sameer Sinha

41

ใน Eclipse ไปที่โครงการเซิร์ฟเวอร์ เปิดแผนผังสำหรับเวอร์ชัน Tomcat ที่คุณใช้อยู่ เปิดไฟล์server.xmlและตรวจสอบแท็กบริบทของคุณ



16

ไปserver.xmlและค้นหาแท็กที่มีชื่อสถานที่ให้บริการ"Context""docBase"

ลบบรรทัดที่ซ้ำกันที่นี่ จากนั้นลองรีสตาร์ทเซิร์ฟเวอร์


12

ไปที่โครงการเซิร์ฟเวอร์ใน eclipse ภายใต้การกำหนดค่าเซิร์ฟเวอร์รันไทม์ของคุณ (ในกรณีของฉัน Tomcat v7.0 Server ที่ localhost-config) ไปที่server.xmlไฟล์จากนั้นค้นหาแท็ก <context> โดยปกติคุณจะพบแท็กบริบทมากกว่าหนึ่งแท็ก ลบออกและเรียกใช้แอปพลิเคชันของคุณในเซิร์ฟเวอร์ที่เหมาะสมซึ่งจะใช้งานได้ในขณะนี้

ในกรณีของฉันฉันพบแท็กบริบทที่ซ้ำกัน:

<Context docBase="my-project" path="/my-project" reloadable="true" source="org.eclipse.jst.jee.server:my-project"/&gt;&lt;Context docBase="my-project" path="/smartphone-selfcare" reloadable="true" source="org.eclipse.jst.jee.server:my-project"/></Host>

10

ใน eclipse โดยใช้ tomcat คุณเพียงแค่เปิดไฟล์ server.xml นี้และค้นหาแท็กบริบทและที่นี่คุณจะเห็นชื่อบริบทของคุณเป็นมากกว่านั้นคุณเพียงแค่ลบบริบทที่ไม่มีประโยชน์และรีสตาร์ทเซิร์ฟเวอร์ของคุณมันจะทำงาน ...

ป้อนคำอธิบายภาพที่นี่


5
  1. ในคุณสมบัติของโครงการของคุณให้เลือก "การตั้งค่าโครงการเว็บ"
  2. เปลี่ยน "Context root"
  3. ทำความสะอาดเซิร์ฟเวอร์ของคุณ
  4. ตอนนี้คุณสามารถรีสตาร์ทเซิร์ฟเวอร์ของคุณได้

โซลูชันที่ยอดเยี่ยมสำหรับ devs โดยใช้แอปพลิเคชันเดียวกันมากกว่าหนึ่งอินสแตนซ์ในตำแหน่งต่างๆบนเวิร์กสเตชัน ฉันพบว่าไม่ใช่การติดตั้ง Eclipse / Tomcat ทั้งหมดที่มีแท็ก <Context> ในไฟล์ server.xml
Mindsect Team


3

เพียงแค่ลบเซิร์ฟเวอร์ใน Eclipse และเพิ่มเซิร์ฟเวอร์ tomcat อีกครั้ง กว่าการปิดเครื่อง tomcat ในไฟล์ tomcat / bin / shutdown.bat และเริ่มเซิร์ฟเวอร์ใน eclipse


2

พยายามลบเซิร์ฟเวอร์ tomcat ที่มีอยู่ในคอนโซลเซิร์ฟเวอร์ หากคุณไม่มีคอนโซลคุณสามารถไปที่ "แสดงมุมมอง -> เซิร์ฟเวอร์" ลบเซิร์ฟเวอร์โดยคลิกขวาที่เซิร์ฟเวอร์จากนั้นเพิ่มเซิร์ฟเวอร์ใหม่


2

หากคุณใช้ Tomcat 7 และ Eclipse ให้คลิกที่เซิร์ฟเวอร์ Tomcat จากนั้นไปที่แท็บโมดูล คุณจะพบรายการที่ซ้ำกันที่นั่น ลบทั้งรายการและปรับใช้แอปพลิเคชันใหม่ คุณพร้อมที่จะไปแล้ว


2

ในบันทึกที่เกี่ยวข้องหากคุณได้คัดลอกโครงการหรือในกรณีใด ๆ มีเส้นทางบริบทเดียวกันสำหรับ 2 โครงการที่ 'ใช้งานอยู่' คุณต้องเปลี่ยนเส้นทางบริบทของหนึ่งในนั้นจากนั้นทำความสะอาดการตั้งค่าเซิร์ฟเวอร์ tomcat จากนั้นเผยแพร่เซิร์ฟเวอร์อีกครั้ง

ดูคำตอบโดยละเอียดเพิ่มเติมนี้


1

ฉันมีปัญหานั้นมาก่อน ฉันเพิ่งแก้ไขโดยการขยายต้นไม้แมวตัวผู้และลบโฟลเดอร์ที่เป็นสาเหตุของการปะทะ /FirstApacheในกรณีของคุณคือ หลังจากที่คุณลบ จากนั้นคุณเปิดใช้งานอีกครั้งคุณควรจะวิ่งได้ หากเกิดขึ้นอีกให้ลบออกแล้วลองอีกครั้ง


0

ลบช่องว่างหรือบรรทัดว่างใน server.xml หรือ context.xml ที่จุดเริ่มต้นของโค้ดของคุณ


0

ในกรณีของฉันฉันพบเส้นทางที่ซ้ำกันในเซิร์ฟเวอร์ / Tomcat5.5 ที่ localhost-config / server.xml ภายใต้แท็ก การลบรายการที่ซ้ำกันช่วยแก้ปัญหาได้


0

ลบ org.eclipse.wst.server.core และ org.eclipse.wst.server.ui จาก. metadata / .plugins ของ wrokspace

ลบเซิร์ฟเวอร์จาก eclipse จากนั้นกำหนดค่าเซิร์ฟเวอร์ใหม่ใน eclipse


0

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณคัดลอกโปรเจ็กต์มากกว่าที่จะผ่านมาและคุณเปลี่ยนชื่อของโปรเจ็กต์

ในกรณีดังกล่าวให้ทำตามขั้นตอนต่อไปนี้

ขั้นตอนที่ 1: คุณต้องแก้ไขไฟล์ web.xml ของคุณ ลบ servlet และ servlet-mapping ของโปรเจ็กต์ก่อนหน้า

ขั้นตอนที่ 2: ไปที่ SERVER -> server.xml -> ค้นหาบริบท

ตัวอย่าง: - Context docBase = "JSPandServletDemo" path = "/ JSPandServletDemo" reloadable = "true" source = "org.eclipse.jst.jee.server: JSPandServletDemo" />

ตอนนี้คุณเพียงแค่ต้องเปลี่ยนชื่อพา ธ เป็นชื่อโครงการปัจจุบันของคุณ

ขอให้โชคดี Happy Coding :)


-1

หากคุณใช้ STS และเซิร์ฟเวอร์ของคุณเป็น Pivotal เพียงดับเบิลคลิกที่เซิร์ฟเวอร์แล้วไปที่แท็บ> โมดูล> แสดงกำหนดค่าโมดูลเว็บบนเซิร์ฟเวอร์นี้> คุณสามารถลบโมดูลออกและเรียกใช้อีกครั้งได้


-1
 //Trying to do more than one thing to the object in the same context, 
//the solution is to work on single context objects

public class SingletonContext<TContext>
    where TContext: DbContext,new()
{
    private static TContext _context;

    private SingletonContext()
    {

    }
    public static TContext GetInstance()
    {
        if (_context == null)
        {
            _context = new TContext();
        }
        return _context;
    }

}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.