Кілька контекстів з однаковою помилкою шляху запуску веб-сервісу в Eclipse за допомогою Tomcat


130

Це помилка, яку я отримав, коли створив свій перший веб-сервіс Axis2 за допомогою Eclipse. Після написання класу я створив веб-сервіс за допомогою Apache Axis2. Коли я натискаю кнопку запуску сервера при затемненні, воно видає повідомлення про помилку:

Не вдалося опублікувати конфігурацію сервера для 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 у випадку, якщо це не ваш сервер затемнення за замовчуванням)
Repoker

Цю проблему я отримав після того, як створив копію динамічного веб-проекту в eclipse java ee і спробував замість цього запустити JSP. Як виправити цю проблему?
Ерран Морад

Слід захищати, щоб уникнути інших марних «подяк». Голосування до відповіді краще, ніж коментар подяки.
Dwhitz

Дякую, це працює, але я в сум'ятті, чому таке дублювання відбувається?
Сандіп С.

Це рішення все ще працює, я використовую Tomcat 8.5 на Eclipse V2018-12
Arthur

70

У STS / Eclipse перейдіть до "Explorer Explorer" або "Explorer Explorer" і там є папка під назвою "сервер". Відкрийте його, і ви знайдете server.xmlфайл. Всередині цього файлу внизу ви знайдете таке визначення, як

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

Можливо, ви знайдете дублікати того самого визначення, яке вам потрібно було б видалити.


1
Додавання видалення серверів додано, цей рядок ще раз автоматично
Vinayak Shedgeri

Якщо додаток не запускається навіть після цього, перейдіть на вкладку «Сервери» поруч із Консоль та видаліть усі модулі, що знаходяться всередині випадаючого імені сервера. Перезавантажте проект після цього
Сінха

41

У Eclipse перейдіть до проекту Сервери . Відкрийте дерево для версії Tomcat, яку ви використовуєте. Відкрийте файл server.xml і перевірте свої теги контексту.


28

У вашому IDE затемненні на провіднику проекту доступ до сервера.xml, як у:

введіть тут опис зображення

І видаліть теги контексту з дублікатами посилань для вашого проекту:

введіть тут опис зображення


16

Перейдіть server.xmlта шукайте "Context"тег із назвою властивості "docBase".

Видаліть тут повторювані рядки. Потім спробуйте перезапустити сервер.


12

Перейдіть до проекту Servers у затемненні, під час налаштування сервера виконання (у моєму випадку 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

У затемненні за допомогою tomcat ви просто відкриєте цей файл server.xml і знайдете тег контексту, і тут ви побачите, що ваше ім'я контексту більше, ніж одне, ви просто видаляєте непотрібні контексти та перезапускаєте сервер, він буде працювати ....

введіть тут опис зображення


5
  1. У Властивості вашого проекту виберіть "Налаштування веб-проекту".
  2. Змініть "Корінь контексту".
  3. Очистіть ваш сервер
  4. тепер ви можете перезапустити ваш сервер

Відмінне рішення для розробників, що використовують більше одного примірника одного і того ж додатка в різних місцях на своїх робочих станціях. Я виявив, що не всі установки Eclipse / Tomcat у своєму файлі server.xml мають тег <Context>.
Mindsect Team

5

Eclipse >> Explorer Explorer >> сервери >> server.xml >> тег >> видалити дублікат тегу вашого проекту


3

Просто видаліть сервер у Eclipse та додайте знову сервер tomcat. ніж відключити tomcat у файлі tomcat / bin / shutdown.bat та запустити сервер у затемненні.


2

Спробуйте видалити існуючий сервер tomcat в консолі сервера. Якщо у вас немає консолі, ви можете перейти до "Показати перегляд -> сервер", видалити сервер, клацнувши правою кнопкою миші, а потім додати новий сервер.


2

Якщо ви використовуєте Tomcat 7 і Eclipse, натисніть на сервер Tomcat і перейдіть на вкладку модулів. Там ви знайдете дублікат запису. Видаліть запис і повторно застосуйте програму. Вам добре піти зараз.


2

У відповідній примітці, якщо ви скопіювали проект або в будь-якому випадку, маєте однаковий контекстний шлях для 2-х активних проектів, вам слід змінити контекстний шлях до одного з них, потім очистити налаштування сервера tomcat, а потім повторно опублікувати сервери

дивіться цю детальну відповідь


1

Я мав цю проблему раніше. Я просто вирішив це, розширивши дерево tomcat і видаливши папку, яка викликає зіткнення. у вашому випадку є /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 of wrokspace

видаліть сервер від затемнення, потім переконфігуруйте сервер у затемненні.


0

Ця помилка виникає, коли ви копіюєте проект, ніж минулий, а потім ви змінюєте назву цього проекту.

у такому випадку виконайте наступні кроки.

Крок 1. Вам потрібно відредагувати файл web.xml. видалити сервлет та сервлет-карти попередніх проектів.

Крок 2: потрапив до SERVER -> server.xml -> знайти контекст

Приклад: - Контекст docBase = "JSPandServletDemo" path = "/ JSPandServletDemo" = "true" source = "org.eclipse.jst.jee.server: JSPandServletDemo" />

тепер просто потрібно змінити ім'я шляху на поточну назву проекту.

Удачі щасливого кодування :)


-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;
    }

}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.