Triển khai ứng dụng Spring MVC trên Oracle WebLogic Server
Xem thêm các chuyên mục:

Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.


Xem thêm:
Trong tài liệu này tôi sẽ hướng dẫn bạn triển khai một ứng dụng Spring MVC trên Oracle WebLogic Server. Tài liệu được viết dựa trên:
-
Spring MVC 4.x
-
Oracle WebLogic Server 12c (12.2.1.1.0).
Đảm bảo rằng bạn đã cài đặt WebLogic Server, nếu chưa cài bạn có thể xem hướng dẫn tại:
Trong tài liệu này tôi sẽ đóng gói một ứng dụng Spring MVC, được viết trên Eclipse và triển khai nó trên WebLogic Server.
Chú ý rằng nếu bạn triển khai Spring MVC lên các server khác như Tomcat, Glassfish bạn không cần phải thay đổi gì trên Source code của bạn. Tuy nhiên nếu triển khai trên WebLogic bạn cần thêm một số file cấu hình vào source code trước khi đóng gói.
Tôi sẽ triển khai ứng dụng "Hello World Spring MVC" lên WebLogic. Ứng dụng này bạn có thể xem tại:
Hoặc download mã nguồn (Source Code):
Đây là hình ảnh của Project sau khi hoàn thành:

Thêm weblogic.xml vào WEB-INF. Trong file weblogic.xml bạn cần phải cấu hình contextPath (context-root) cho ứng dụng. Ở đây tôi đặt là /springmvc. Bạn có thể đặt là / nếu muốn sử dụng contextPath rỗng.

/WEB-INF/weblogic.xml
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app>
<context-root>/springmvc</context-root>
<container-descriptor>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
</weblogic-web-app>
Maven Clean:


Maven Install:


File war đã được tạo ra trong thư mục 'target' của project.






Chú ý: Nếu bạn gặp lỗi tại một trong các bước triển khai, hãy xem phụ lục ở phía cuối tài liệu.




Ứng dụng của bạn đã được triển khai nên WebLogic, và nó đang có trạng thái "prepared" (Đã được chuẩn bị). Bạn cần phải làm thêm một bước nữa là kích hoạt nó.

Mở khóa lại để thay đổi:

Start ứng dụng:


Ứng dụng của bạn đã được kích hoạt thành công.

Test ứng dụng:



Trường hợp bạn muốn triển khai lại, hoặc gỡ bỏ triển khai (undeloy) trước tiên bạn cần phải stop ứng dụng.

Nếu trong khi triển khai trên WebLogic bạn nhận được lỗi như dưới đây:
java.io.FileNotFoundException:
Could not open ServletContext resource [/WEB-INF/SpringDispatcher-servlet.xml]

Nguyên nhân lỗi là project Spring MVC của bạn sử dụng Annotation để cấu hình (Không sử dụng XML), nhưng ứng dụng vẫn đọc cấu hình từ file XML (SpringDispatcher-servlet.xml), file này không tồn tại trên Project của bạn.
Bạn cần cấu hình trên SpringWebAppInitializer để đảm bảo chắc chắn ứng dụng sẽ không tìm đọc các file XML nói trên.
Bạn cần cấu hình trên SpringWebAppInitializer để đảm bảo chắc chắn ứng dụng sẽ không tìm đọc các file XML nói trên.
// Add code:
dispatcher.setInitParameter("contextClass", appContext.getClass().getName());
servletContext.addListener(new ContextLoaderListener(appContext));
Xem code đầy đủ:
SpringWebAppInitializer.java
package org.o7planning.hellospringmvc.config;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.DispatcherServlet;
public class SpringWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
appContext.register(ApplicationContextConfig.class);
// Dispatcher Servlet
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDispatcher",
new DispatcherServlet(appContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
// IMPORTANT!!
dispatcher.setInitParameter("contextClass", appContext.getClass().getName());
// IMPORTANT!!
servletContext.addListener(new ContextLoaderListener(appContext));
// UTF8 Charactor Filter.
FilterRegistration.Dynamic fr = servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
fr.setInitParameter("encoding", "UTF-8");
fr.setInitParameter("forceEncoding", "true");
fr.addMappingForUrlPatterns(null, true, "/*");
}
// .........
}