2011-07-25 34 views
6

Tôi đang sử dụng JSF2 với Websphere 7. Tôi đã tạo ra một lib chia sẻ thành công và đã chỉ ứng dụng bằng cách sử dụng Webpsphere Admin Console và nó hoạt động thành công. Nhưng những gì chúng tôi thực sự muốn làm là không phải chỉ ra rằng Lib chia sẻ thông qua WAS Admin Console nhưng có một số loại cấu hình mức ứng dụng, ví dụ trong deployment.xml vv mà chúng ta có thể trỏ đến tên của Shared Isolated Lib và sử dụng nó . Tôi đã trải qua SO và google nhưng không tìm thấy bất kỳ điều nào làm điều đó. Tuy nhiên tôi biết rằng có ứng dụng thương mại đang làm việc đó nhưng không biết làm thế nào.
Câu hỏi này từ How can I specify a shared library reference at the web module level in Websphere 6.1 deployment descriptors? là chặt chẽ những gì tôi sau nhưng tôi không muốn chỉ định số phiên bản hoặc tên jar như các tiểu bang trả lời
Làm thế nào để cấu hình EAR để truy cập vào Libis Websphere Shared Lib?

Trả lời

9

Tôi đã tìm thấy một cách đơn giản bằng cách làm theo những gì mà Bảng điều khiển quản trị của WAS thực sự đang thực hiện.

Tạo tệp deployment.xml trong tệp EAR của bạn nếu bạn chưa có tệp. Bạn sẽ tìm thấy một tham chiếu đến lớp loader như dưới đây

<classloader xmi:id="Classloader_1311552732281" mode="PARENT_FIRST"> 

Sửa đổi nó và thêm tham chiếu đến liberary chia sẻ tạo ra trên máy chủ như dưới đây

<classloader xmi:id="Classloader_1311552732281" mode="PARENT_FIRST"> 
     <libraries libraryName="JSF2_SHARED_LIB" sharedClassloader="true"/> 
</classloader> 

@dbreaux cũng đã thể hiện một cách .Accpeting của riêng tôi câu trả lời là phù hợp với nhu cầu của tôi tốt hơn nhưng cảm ơn lớn để dbreaux quá cho lời khuyên.

4

là vấn đề chỉ là bạn không muốn phải cấu hình mỗi ứng dụng riêng biệt, hoặc bạn không muốn sử dụng bảng điều khiển quản trị? Bạn có thể associate a shared library with an entire server, có thể thích hợp hơn để làm điều đó cho mỗi ứng dụng.

Cách khác để tạo các liên kết ứng dụng đó là trong tệp triển khai .xmi dành riêng cho WebSphere. Chúng được tạo ra khi bạn triển khai nhưng cũng có thể được bao gồm trong các tệp WAR/EAR. Tôi không biết liệu điều đó có giúp ích gì cho bạn hay không. Nếu có, cách chính thức để tạo chúng trước thời hạn là sử dụng một trong các Deployment Tools, nhưng vì chúng chỉ là XML, bạn có thể cảm thấy thoải mái khi tạo chúng theo cách thủ công.

+0

Vấn đề là chúng tôi đã làm không muốn liên kết với toàn bộ máy chủ vì có một số ứng dụng sử dụng JSF1.2 và Quản trị viên không muốn liên kết với qua giao diện điều khiển máy chủ (không chắc chắn vì sao :)) Tôi đã quản lý để làm những gì mà giao diện quản trị thực hiện sau cảnh bằng cách tạo mục nhập standard.xml.Thanks cho câu trả lời của bạn, tôi đã bỏ phiếu cho nó. – Shahzeb

+0

Kết hợp thư viện được chia sẻ với toàn bộ máy chủ là một gợi ý tốt. – Frans

2

Để thêm chi tiết bổ sung vào câu trả lời của Shahzeb: Môi trường của tôi: Websphere 8.5; Windows 7; (Eclipse Luna để tạo tệp thử nghiệm .war)

Tôi đã cài đặt tệp chiến tranh được xuất từ ​​nhật thực trên máy chủ websphere bằng bảng điều khiển websphere. Sau đó xuất nó lại và giải nén nó để xem những gì websphere tự động thêm vào nó để tạo ra EAR.

[folder]META-INF 
    [folder]ibmconfig 
    [file]application.xml 
    [file]ibm-application-bnd.xmi 
    [file]ibm-application-runtime.props 
    [file]MANIFEST.MF 
    [file]was.module 
    [file]was.policy 
    [file]was.webmodule 

[file]myWAR.war 

Và file deployment.xml được đặt trong .. \ ibmconfig \ tế bào \ defaultCell \ ứng dụng \ defaultApp \ triển khai \ defaultApp \

nội dung có trong hình thức


<?xml version="1.0" encoding="UTF-8"?> 
<appdeployment:Deployment xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:appdeployment="http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi" xmi:id="Deployment_1417052686904"> 
    <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1417052686904" deploymentId="0" startingWeight="1" binariesURL="$(APP_INSTALL_ROOT)/[server service name]Cell/myWAR.ear" useMetadataFromBinaries="false" enableDistribution="true" createMBeansForResources="true" reloadEnabled="false" appContextIDForSecurity="href:[server service name]Cell/myWAR" filePermission=".*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755" allowDispatchRemoteInclude="false" allowServiceRemoteInclude="false" asyncRequestDispatchType="DISABLED" standaloneModule="true" enableClientModule="false"> 
    <targetMappings xmi:id="DeploymentTargetMapping_1417052686904" enable="true" target="ServerTarget_1417052686904"/> 
    <classloader xmi:id="Classloader_1417052686904" mode="PARENT_FIRST"/> 
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1417052686904" deploymentId="1" startingWeight="10000" uri="myWAR.war" containsEJBContent="0"> 
     <targetMappings xmi:id="DeploymentTargetMapping_1417052686905" target="ServerTarget_1417052686904"/> 
     <classloader xmi:id="Classloader_1417052686905"/> 
    </modules> 
    <properties xmi:id="Property_1417052686904" name="metadata.complete" value="true"/> 
    </deployedObject> 
    <deploymentTargets xmi:type="appdeployment:ServerTarget" xmi:id="ServerTarget_1417052686904" name="server1" nodeName="[server service name]"/> 
</appdeployment:Deployment> 

(Vì tôi không có danh tiếng, tôi phải làm tất cả trong văn bản ..)

Các vấn đề liên quan