2012-12-12 25 views
5

Dự án tôi làm việc ở mức khá cụ thể. Chúng tôi sử dụng GWT với phần phụ trợ SAP. Chúng tôi chạy chế độ Dev bằng cách sử dụng cấu hình sau đây (như các đối số chương trình, tôi chạy dự án trực tiếp sử dụng IntelliJ IDEA)Chế độ Super Dev trên máy chủ từ xa

-noserver -logLevel INFO -startupUrl http://server-url:8000/aaa -whitelist ^http[:][/][/]server-url[.]eu[:]8000/aaa com.company.project.main.Main 

Lưu ý, chúng tôi đã không sử dụng một máy chủ cục bộ (-noserver).

Sau khi tự làm quen với chế độ Super Dev, tôi hiểu rằng nó hoạt động tương tự như Chế độ web GWT, tức là biên dịch JavaScript (thư mục để biên dịch thành có thể được chỉ định) và sau đó chạy máy chủ mã với tập lệnh đó được lưu trữ.

Do các chi tiết cụ thể của dự án, JavaScript được biên dịch được triển khai tới máy chủ từ xa bằng cách sử dụng maven thông qua WebDav. Vì vậy, chỉ cần chỉ định -workDir làm tham số sẽ không triển khai các tập lệnh trên máy chủ từ xa. Chúng ta cũng không thể chạy (ít nhất là tại thời điểm này) một máy chủ Java trên địa chỉ server-url.

Chúng tôi có thể sử dụng Chế độ siêu phát trong tình huống này không?

Trả lời

9

Có thể.

EDIT 2016/11/27: tôi đã xây dựng một devserver rằng có thể sử dụng -launcherDir SuperDevMode kiểu mà không cần phải viết cho máy chủ, bằng cách sử dụng một proxy webpack như: https://github.com/tbroyer/gwt-devserver

EDIT: có một vài vấn đề lại. thuộc tính ràng buộc hoãn lại. Việc sử dụng SDM (kể từ GWT 2.7) được khuyến nghị là sử dụng -launcherDir có nghĩa là sử dụng máy chủ cục bộ.

SuperDevMode hoạt động giống như DevMode với -noserver, có nghĩa là bạn phải triển khai ứng dụng của mình ít nhất một lần với máy chủ của bạn. Trong trường hợp SuperDevMode, điều đó có nghĩa là bạn phải biên dịch và triển khai với liên kết xsiframe và thuộc tính devModeRedirectEnabled được đặt thành true.

Sau đó, bạn chạy SuperDevMode trên máy của mình, tạo bookmarklet nếu chưa thực hiện, tải ứng dụng của bạn từ máy chủ từ xa và nhấp vào dấu trang Dev Mode On.

Điều này sẽ lưu trữ nội dung nào đó trong sessionStorage của trình duyệt để tải lại trang bây giờ sẽ tải hoán vị từ SuperDevMode chạy trên máy của bạn thay vì máy chủ từ xa.

Thông tin thêm về cách SuperDevMode hoạt động: http://blog.ltgt.net/how-does-gwts-super-dev-mode-work/

+0

Nhưng tôi nên chạy chế độ Super Dev nào? Shoul tôi chỉ định nó như là '-bindAddress server-url -port 8000'? Nếu tôi làm điều đó tôi nhận được 'java.net.BindException: Không thể gán địa chỉ được yêu cầu' và cảnh báo' không chọn SelectChannelConnector @ server-url: 8000'. – Vic

+2

Câu trả lời là chính xác, có thể. Tuy nhiên, tôi đã phải chạy SuperDevMode với '-bindAddress 0.0.0.0'.Sau đó, tôi mở liên kết được cung cấp 'http: // victor-dell: 9876', nơi tôi có thể kéo dấu trang. Bước tiếp theo là mở «http: // server-url: 8000/aaa' của tôi và sau đó nhấp vào bookmarklet" Dev Mode On ". Tôi cũng có thể chuyển sang 'http: // victor-dell: 9876' sau khi tôi có các bookmarklet đó. – Vic

+0

Nếu không có '-bindAddress' thì bạn có thể chỉ cần truy cập vào máy chủ mã tại' localhost' hoặc '127.0.0.1' và tất cả sẽ hoạt động giống nhau. –

0

Hiện tại, tôi chỉ thấy một giải pháp có thể, chạy gwt-codeserver.jar bằng cách nào đó trên máy chủ SAP (với địa chỉ, http://server-url:8000/bbb) và viết một servlet, sẽ chuyển hướng tất cả các yêu cầu đến http://server-url:8000/aaa. Tuy nhiên, điều này không phải là rất dễ thực hiện. Máy chủ SAP có cơ chế xác thực "khéo léo", nơi người dùng lần đầu tiên nhìn thấy trang đăng nhập và sau đó họ được chuyển hướng đến một URL cụ thể của phiên được tạo.

Các ý tưởng khác rất được hoan nghênh.