Làm cách nào để thay đổi gốc ngữ cảnh của một dự án web động trong Eclipse?


205

Tôi đã phát triển một dự án web động trong Eclipse. Tôi có thể truy cập ứng dụng thông qua trình duyệt của mình bằng URL sau:

http://localhost:8080/MyDynamicWebApp

Tôi muốn thay đổi URL truy cập thành:

http://localhost:8080/app

Để làm như vậy, tôi đã thay đổi root ngữ cảnh từ dự án "Thuộc tính | Cài đặt dự án web | Root ngữ cảnh". Tuy nhiên, ứng dụng web vẫn có cùng một URL truy cập. Tôi đã triển khai lại ứng dụng trên Tomcat và khởi động lại Tomcat, nhưng URL truy cập vẫn giống như trước đó.

Tôi thấy rằng không có server.xmltập tin đính kèm với WARtập tin. Không có server.xmltệp đính kèm, làm thế nào Tomcat xác định rằng gốc ngữ cảnh của ứng dụng web của tôi /MyDynamicWebAppvà cho phép tôi truy cập ứng dụng thông qua URL gốc ngữ cảnh này?

Câu trả lời:


331

Tôi chắc chắn bạn đã chuyển đến bây giờ, nhưng tôi nghĩ dù sao tôi cũng sẽ trả lời.

Một số câu trả lời cho cách giải quyết. Điều thực sự phải xảy ra là bạn dọn dẹp và xuất bản lại dự án của mình để "kích hoạt" URI mới. Điều này được thực hiện bằng cách nhấp chuột phải vào máy chủ của bạn (trong chế độ xem Máy chủ) và chọn Clean. Sau đó, bạn bắt đầu (hoặc khởi động lại nó). Hầu hết các câu trả lời khác ở đây đề nghị bạn làm những việc có hiệu lực thực hiện điều này.

Tệp đang thay đổi là workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.dattrừ khi, nghĩa là bạn đã có nhiều hơn một máy chủ trong không gian làm việc của mình, trong trường hợp đó, nó sẽ nằm publishN.dattrên cùng một đường dẫn.

Hy vọng điều này sẽ giúp ai đó.


Không chắc đây có phải là nghi thức đúng hay không - Tôi đang chỉnh sửa câu trả lời này để đưa ra các bước chính xác cho Indigo Eclipse.

  1. Trong Thuộc tính dự án của bạn , chọn Cài đặt Dự án Web .

  2. Thay đổi gốc ngữ cảnh thành ứng dụng .

    Ảnh chụp màn hình thuộc tính dự án Eclipse Cài đặt dự án Web

  3. Chọn Cửa sổ> Hiển thị Chế độ xem> Máy chủ .

  4. Dừng máy chủ bằng cách nhấp vào ô vuông màu đỏ (công cụ "Dừng máy chủ") hoặc nhấp vào ngữ cảnh trên danh sách máy chủ để chọn "Dừng".

  5. Trên máy chủ bạn muốn sử dụng, nhấp vào ngữ cảnh để chọn "Làm sạch".

    nhập mô tả hình ảnh ở đây

  6. Nhấn OK trong hộp thoại xác nhận này.

    Ảnh chụp màn hình của hộp thoại yêu cầu cập nhật cấu hình máy chủ để phù hợp với gốc ngữ cảnh đã thay đổi

Bây giờ bạn có thể chạy ứng dụng của mình với URL "ứng dụng" mới, chẳng hạn như:

http://localhost:8080/app/

Làm điều này bên ngoài Eclipse, trên máy chủ sản xuất của bạn, thậm chí còn dễ dàng hơn -> Đổi tên tệp chiến tranh. Xuất ứng dụng Vaadin của bạn dưới dạng tệp WAR ( Tệp> Xuất> Web> tệp WAR ). Di chuyển tệp WAR vào thùng chứa servlet của máy chủ web của bạn như Tomcat. Đổi tên tệp WAR của bạn, trong trường hợp này thành app.war . Khi bạn khởi động thùng chứa servlet, hầu hết như Tomcat sẽ tự động triển khai ứng dụng, bao gồm mở rộng tệp tin chiến tranh vào một thư mục. Trong trường hợp này, chúng ta sẽ thấy một thư mục có tên ứng dụng . Bạn sẽ được tốt để đi. Kiểm tra URL của bạn. Đối với một tên miền như * example.com ", đây sẽ là:

http://www.example.com/app/

Các lập trình viên bộ công cụ Vaadin có thể cần phải xây dựng lại bộ widget của họ nếu sử dụng các tiện ích trực quan.


Câu trả lời chính xác !!! Bạn cứu mạng tôi bằng những câu trả lời khác ở đây đề nghị bạn làm những việc có hiệu quả thực hiện điều này
AndreaNobili

Đây là thiên tài của câu trả lời này: Tôi đã tìm đường đến trang này và thậm chí không đọc các thẻ (Tôi đang xây dựng một trang web ASP.NET bằng Visual Studio). Nhưng giải pháp nào cũng hiệu quả!
Curt

Tôi không có tùy chọn "Cài đặt dự án web" như vậy
IntoTheDeep

chỉ nói rằng đó workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.datlà một tệp nhị phân, tôi không hiểu tại sao bạn lại đề cập đến nó ở đó, nó mang lại cho Ấn tượng đó là giải pháp cho vấn đề
aliopi

Nhưng điều gì sẽ xảy ra nếu chúng ta không sử dụng Eclipse .. hoặc bất kỳ IDE nào .. Tôi muốn lập trình cấu hình đường dẫn gốc của bối cảnh servlet. Làm thế nào để tôi làm điều đó? trong web.xml có lẽ? ..
Giorgi Tsiklauri

32

Sau khi thay đổi gốc ngữ cảnh trong thuộc tính dự án, bạn phải xóa ứng dụng web của mình khỏi Tomcat (sử dụng Thêm và Xóa ... trên menu ngữ cảnh của máy chủ), triển khai lại, sau đó thêm lại ứng dụng của bạn và triển khai lại. Nó làm việc cho tôi.

Nếu bạn bị tấn công, bạn có một lựa chọn khác: chọn máy chủ Tomcat trong chế độ xem Máy chủ. Nhấp đúp chuột vào máy chủ đó (hoặc chọn Mở trong menu ngữ cảnh) mang đến trình chỉnh sửa nhiều trang trong đó có trang Mô-đun. Tại đây bạn có thể thay đổi ngữ cảnh gốc của mô-đun của mình (được gọi là Đường dẫn trên trang này).


Cảm ơn! Điều này đã lừa tôi. tuy nhiên, nó thậm chí hoạt động mà không thay đổi gốc ngữ cảnh trong các thuộc tính dự án. Am i thiếu cái gì ở đây?
Chris

Điều này cũng được sử dụng để làm việc cho tôi trong các bản dựng Eclipse trước đây nhưng trong bản dựng hiện tại (Luna) chỉ có tùy chọn Clean hiện hoạt động
Griknok

namasety, dhanywaada :) khi tôi thay đổi bối cảnh ban đầu, nó không hoạt động ngay cả khi máy chủ khởi động lại và dọn dẹp. Nó chỉ hoạt động bài, tôi gỡ bỏ dự án và tập hợp lại.
Yogesh Sanchihar

24

Nếu bạn đang chạy Tomcat từ Eclipse, thì nó không sử dụng cấu hình từ cài đặt Tomcat thực tế của bạn. Nó sử dụng cấu hình Tomcat mà nó đã tạo và lưu trữ trong dự án "Máy chủ". Nếu bạn xem không gian làm việc Eclipse của mình, bạn sẽ thấy một dự án có tên là "Máy chủ". Mở rộng dự án "Máy chủ" đó và bạn sẽ bắt gặp server.xml. Mở tệp này và cuộn toàn bộ xuống phía dưới, và bạn sẽ thấy một cái gì đó như thế này: -

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

Ở đây, bạn chỉ có thể thay đổi đường dẫn bối cảnh dự án của bạn sang một cái gì đó khác.

Hi vọng điêu nay co ich.


Tôi không chắc chắn bạn muốn thay đổi cả 3 giá trị. Giải pháp của Csaba_H đã làm việc cho tôi và điều đó chỉ thay đổi thuộc tính "đường dẫn" ...
Chris

Cái này không hoạt động với tôi - các tệp trong thư mục đó bị ghi đè khi bạn khởi động lại máy chủ. Phiên bản hai của Csaba_H, tab Modules trong Tomcat Server, có vẻ như là phương pháp "đúng".
idarwin

17

Tôi đã thử giải pháp được đề xuất bởi Russ Bateman Ở đây trong bài viết

http://localhost:8080/Myapp đến http://localhost:8080/somepath/Myapp

Nhưng Didnt đã làm việc cho tôi vì tôi cần phải có tệp * .war có thể giữ cấu hình và không phải là cá thể máy chủ riêng lẻ trên localmachine của tôi.

Tài liệu tham khảo

Để làm được điều đó, tôi cần jboss-web.xml được đặt trong WEB-INF

<?xml version="1.0" encoding="UTF-8"?>
 <!--
Copyright (c) 2008 Object Computing, Inc.
All rights reserved.
-->
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

  <jboss-web>
  <context-root>somepath/Myapp</context-root>
  </jboss-web>

Điều này làm việc cho tôi. Môi trường = Eclipse + m2e + m2e-wtp + triển khai lên JBoss từ chế độ xem Máy chủ. Cần triển khai dự án web chính là ROOT và không có cài đặt Eclipse nào thực hiện thủ thuật. Tôi đã sao chép tệp của Tosha (ở trên) và đặt dấu ngoặc kép "ROOT" làm giá trị gốc ngữ cảnh. Ngay và luôn. Cảm ơn, @Tosha!
Steven Francolla

Điều này hoạt động, nhưng tôi tự hỏi tại sao nó bỏ qua các thiết lập trong thuộc tính dự án?
Vedran

4
Hoạt động với Chung kết JBoss WildFly 8.1.0
alexander

Tôi đã di chuyển từ MyEclipse 8.6 sang Eclipse và không thể triển khai với bối cảnh gốc '/'. Thêm jboss-web.xml đã hoạt động thành công. máy chủ: Jboss AS 5.1 Luna Luna.
Sai

9

Đặt đường dẫn thành không có gì trong hộp thoại chỉnh sửa mô-đun web Eclipse cho phép tôi truy cập dự án mà không cần bất kỳ thành phần đường dẫn nào trong URL (ví dụ ROOT)

Bạn có thể tiếp cận hộp thoại chỉnh sửa mô-đun web bằng cách nhấn F3 nếu bạn chọn Tomcat trong chế độ xem "Máy chủ" hoặc nhấp đúp vào nó.

Một số ảnh chụp màn hình:


Xin lỗi nhưng bạn có thể cho biết thêm chi tiết về điều này?
smonff

oh, cảm ơn bạn Trên Eclipse Luna trên GNU / Linux, /mặc dù vậy là bắt buộc.
smonff

1
Tôi đã sử dụng Eclipse Mars (4.5) trên Win7.
Ray Hulha

6

Apache tomcat giữ đường dẫn ngữ cảnh dự án trong đường dẫn server.xml. Đối với mỗi dự án web trên Eclipse, có thẻ từ đó bạn có thể thay đổi nó.
Giả sử, có hai hoặc ba dự án được triển khai trên máy chủ. Đối với mỗi một đường dẫn bối cảnh được lưu trữ trong. Thẻ này nằm trên tệp server.xml trong Máy chủ được tạo trên nhật thực.

Tôi có một dự án cho đường dẫn gốc ngữ cảnh trong máy chủ là:

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

Đường dẫn này đại diện cho đường dẫn ngữ cảnh của ứng dụng web của bạn. Bằng cách thay đổi đường dẫn này, đường dẫn ngữ cảnh ứng dụng web của bạn sẽ thay đổi.


6

Tôi biết câu trả lời đã được chấp nhận rồi. Nhưng, chỉ trong trường hợp bất kỳ ai sử dụng Maven đều muốn đạt được điều tương tự, chỉ cần đặt tên cuối cùng trong bản dựng maven thành bất kỳ tên nào bạn muốn đặt và thực hiện một dự án maven -> cập nhật

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>

4

Nếu dự án là maven, hãy thay đổi "FinalName" trong pom.xml và Cập nhật dự án thành Maven. Điều này hiệu quả với tôi.


2

Trong Glassfish, bạn cũng phải thay đổi tệp WEB-INF / glassfish-web.xml

<glassfish-web-app>
    <context-root>/myapp</context-root>
</glassfish-web-app>

Vì vậy, khi bạn nhấp vào "Chạy như> Chạy trên máy chủ", nó sẽ mở đúng.


Vâng, chúng tôi phải. Chia sẻ tốt đẹp.
Dinath

2

Tôi chỉ muốn thêm rằng nếu bạn không muốn tên ứng dụng của mình trong ngữ cảnh gốc, bạn và chỉ cần đặt "/" (không có dấu ngoặc kép, chỉ là dấu gạch chéo về phía trước) trong Eclipse -> Cài đặt dự án web -> Bối cảnh nhập cảnh

Điều đó sẽ triển khai ứng dụng web tới http: // localhost: 8080 /

Tất nhiên, điều này sẽ gây ra vấn đề với các ứng dụng web khác mà bạn cố chạy trên máy chủ, vì vậy hãy đối mặt với điều đó.

Đã đưa tôi mãi mãi để ghép nó lại với nhau ... vì vậy mặc dù bài đăng này đã 8 tuổi, hy vọng điều này vẫn sẽ giúp được ai đó!


0

Trong dự án java, mở thư mục .sinstall. có định vị tệp có tên "org.eclipse.wst.common.component". Thay đổi thẻ <wb-module integration-name = "NEW_NAME">.

Ngoài ra, bạn có thể muốn thay đổi gốc ngữ cảnh trong thuộc tính dự án


tất cả có vẻ tốt trong dự án của tôi và nó chạy trong nhật thực tốt. Đó là khi tôi chuyển đổi nó thành một tệp tin chiến tranh bằng cách sử dụng maven mà nó mất bối cảnh gốc và thay vì localhost / sự kiện / nó chạy trên localhost / phá vỡ tất cả các liên kết của tôi
JesseBoyd

0

Nếu sử dụng nhật thực để triển khai ứng dụng của bạn. Chúng tôi có thể sử dụng plugin maven này

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <wtpversion>2.0</wtpversion>
        <wtpContextName>newContextroot</wtpContextName>
    </configuration>
</plugin>

Bây giờ hãy vào thư mục gốc dự án của bạn và mở dấu nhắc cmd tại vị trí đó gõ lệnh này:

nhật thực mvn: nhật thực -Dwtpversion = 2.0

Bạn có thể cần phải khởi động lại nhật thực, hoặc trong chế độ xem máy chủ xóa máy chủ và tạo agian để xem ảnh hưởng. Tôi tự hỏi bài tập này có ý nghĩa trong cuộc sống thực nhưng hoạt động.


0

Nếu sử dụng ứng dụng maven java ee 7/8 Enterprise, cần chỉnh sửa pom.xml của dự án EAR

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>com.sample</groupId>
                        <artifactId>ProjectName-web</artifactId>
                        <contextRoot>/myproject</contextRoot>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.