Tôi có một servlet được triển khai như một cuộc chiến tranh trong JBoss 4.0.2. Tôi có một tệp thuộc tính cho ứng dụng được triển khai. Tôi nên đặt tập tin này ở đâu? Dưới thư mục conf trong thư mục jboss server \ default \ conf? Làm cách nào để tải tệp thuộc tính đó theo cách di động?Tải tệp thuộc tính trong một servlet java được triển khai trong JBoss như một chiến tranh
Trả lời
Để tải rằng thuộc tính tập tin trong một di cách , cách tốt nhất là nên đặt nó trên classpath của ứng dụng web (hoặc trong một JAR dưới WEB-INF/lib/
hoặc dưới WEB-INF/classes/
hoặc trên classpath máy chủ ứng dụng nếu bạn muốn để có thể chỉnh sửa tệp đó mà không cần đóng gói lại ứng dụng web của bạn) và sử dụng Class#getResourceAsStream(String)
.
Các mã sau đây được một InputStream
cho một tập tin bất động sản mà nằm trong gói giống như servlet trong đó mã được thực thi:
InputStream inStream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("myfile.properties");
Sau đó, load(InputStream)
nó thành một (xử lý ngoại lệ bỏ qua) Properties
đối tượng :
Properties props = new Properties();
props.load(inStream);
Nơi tốt nhất để đặt nó nằm trong tài liệu gốc của ứng dụng web, chẳng hạn như "./WEB-INF/myapp.properties", tức là liên quan đến nơi gói chứa servlet đã giải nén tệp .war
hoặc .ear
của bạn. Bạn có thể cung cấp tệp thuộc tính trực tiếp trong .war
.
ServletContext
có phương thức getRealPath(String path)
trả về đường dẫn thực trong hệ thống tệp. Sử dụng đường dẫn thực bạn có thể tải nó trong bộ sưu tập Properties
.
Cập nhật Các mã trong bình luận của bạn cố gắng để tra cứu đường thực sự cho "/", bạn nên yêu cầu cho con đường tương đối so với tài sản của bạn tập tin, như trong:
String propertiesFilePath = getServletContext().getRealPath("WEB-INF/application.properties");
Properties props = properties.load(new FileInputStream(propertiesFilePath));
Vì vậy, tôi đã thử các cách sau: Thuộc tính chuỗiFilePath = getServletContext(). GetRealPath ("/") + File.separator + "WEB-INF" + File.separator + "application.properties"; properties.load (new FileInputStream (propertiesFilePath)); Tôi nhận được một FileNotFoundException. Tôi không thấy những gì tôi đã làm sai. – Carlosfocker
Nếu tập tin thuộc tính có thể được triển khai cùng với ứng dụng làm cho nó trở thành một phần của cây nguồn của bạn. Điều này sẽ dẫn đến tệp thuộc tính nằm trong thư mục WEB-INF/classes.
này sau đó có thể được đọc bằng
Properties properties = loadProperties("PropertyFileName.properties", this.getClass());
...
public static Properties loadProperties(String resourceName, Class cl) {
Properties properties = new Properties();
ClassLoader loader = cl.getClassLoader();
try {
InputStream in = loader.getResourceAsStream(resourceName);
if (in != null) {
properties.load(in);
}
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
Chỉ cần có được giữ của ServletContext và sau đó
InputStream stream = getServletContext().getResourceAsStream("/WEB-INF/log4j.properties");
Properties props = new Properties();
props.load(stream);
này sẽ luôn luôn làm việc, bất kể bạn triển khai một cuộc chiến tranh hoặc chiến tranh bùng nổ.
- 1. Triển khai chiến tranh trong Jboss 7.0.1 qua Commandline
- 2. Triển khai chiến tranh Jboss 7 thất bại
- 3. Triển khai các tệp chiến tranh trong Apache Felix?
- 4. triển khai tệp chiến tranh trong máy chủ tomcat
- 5. Bao bì các tệp Javascript trong một cuộc chiến tranh?
- 6. Nhận 404 khi triển khai tệp chiến tranh lên JBoss 7.1
- 7. Cách tải tài nguyên từ tệp jar được đóng gói trong tệp chiến tranh?
- 8. Triển khai tập tin chiến tranh trong Microsoft IIS 7
- 9. Triển khai một cuộc chiến với tomcat
- 10. Thuộc tính phụ thuộc được triển khai như thế nào?
- 11. Đang tải Log4j.xml từ bên ngoài vào trong chiến tranh
- 12. Tải tệp thuộc tính từ gói Java
- 13. Làm thế nào để Maven chạy chiến tranh: phát nổ nhưng không chiến tranh: chiến tranh
- 14. Làm cách nào để đọc tệp tài nguyên trong tệp chiến tranh chưa được giải mã được triển khai trong Tomcat?
- 15. Đặt tệp thuộc tính trong JBoss AS 7
- 16. 404s khi triển khai một cuộc chiến tranh noir đến cầu tàu trên vắt
- 17. Mã hóa các tệp chiến tranh
- 18. Triển khai Java webapp: phát nổ hay không phát nổ?
- 19. Cách tải tệp thuộc tính trong Google App Engine?
- 20. Đổi tên tập tin chiến tranh được tạo ra và tập tin chiến tranh trùng lặp
- 21. Bật triển khai nóng cho các trang web trong jboss-as-7.1.1.Final
- 22. Tệp jar servlet ở đâu trên JBoss 5.0.1?
- 23. Thực thi trong một tập tin chiến tranh
- 24. Forth triển khai từ điển như thế nào? (tranh cãi)
- 25. Làm việc với các tệp thuộc tính bên ngoài chiến tranh với Spring
- 26. Eclipse: Có nhiều dự án web động đóng góp vào một tệp chiến tranh duy nhất?
- 27. Các mảng được triển khai trong java như thế nào?
- 28. Truyền các tệp lớn trong một servlet java
- 29. Chiến lược triển khai hashCode
- 30. Giúp tôi tìm ra một chiến lược triển khai
Dự án yêu cầu điều này đã bị hủy vì vậy tôi chưa bao giờ theo dõi. – Carlosfocker