2011-11-18 26 views
18

Hôm nay tôi nâng cấp máy chủ Glassfish địa phương lên 3.1.1 để chuẩn bị nâng cấp máy chủ của mình lên cùng một phiên bản. Tôi đang cố gắng chuyển đổi dự án dịch vụ web của mình để chơi tốt đẹp với máy chủ mới và đã đạt đến khối đường.Maven không nhận ra EJB là phụ thuộc của dự án khi cố gắng xác định mô-đun

Trong tệp pom tai của tôi, trước đây tôi đã có cả webapp và ejb được liệt kê là phụ thuộc. Trong pom của webapp, tôi đã có ejb được liệt kê như là một phụ thuộc là tốt. Khi cố gắng để triển khai cấu hình này để GlassFish 3.1.1, tôi nhận được lỗi này:

Error occurred during deployment: Exception while deploying the app [ear] : Cannot resolve reference Local ejb-ref name=name,Local 3.x interface =interface,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session because there are 2 ejbs in the application with interface interface. Some of the possible causes: 1. The EJB bean class was packaged in an ear lib library (or through any other library mechanism which makes the library visible to all component modules), this makes all the component modules include this bean class indirectly. 2. The EJB bean class was packaged in a component module which references the EJB, either directly or indirectly through Manifest, WEB-INF/lib. The EJB bean class should only be packaged in the declaring ejb module and not the referencing modules. The referencing modules should only include EJB interfaces.. Please see server.log fo .... msg.seeServerLog

Về cơ bản tôi tin rằng nó đang nói rằng vì tôi có EJB liệt kê như là một sự phụ thuộc vào hai lĩnh vực khác nhau, Glassfish 3.1.1 doesn không biết phụ thuộc nào để xem xét. Đây không phải là vấn đề trong 2.1.1. Bởi vì điều này, tôi đã loại bỏ sự phụ thuộc vào tai, vì nó vẫn sẽ là một phần của pom hiệu quả của tai.

Tuy nhiên, giờ đây khi tai tạo tệp application.xml, nó sẽ xóa tất cả thông tin ejb khỏi tệp. Tôi có thể triển khai ứng dụng ngay bây giờ, nhưng khi tôi cố gắng chạy bất cứ điều gì tôi nhận được NameNotFoundExceptions liên quan đến các ejbs.

Tôi đã cố gắng để thêm các module ejb đến pom tai bằng tay với thẻ, nhưng khi tôi cố gắng để xây dựng dự án Tôi nhận được thông báo lỗi:

Artifact[ejb] is not a dependency of the project.

này mặc dù thực tế rằng khi tôi nhìn vào pom hiệu quả cho tai tôi có thể thấy ejb được liệt kê dưới dạng phụ thuộc.

Làm cách nào để tạo tệp application.xml đúng cách trong khi vẫn tuân thủ ruleset cứng nhắc hơn của Glassfish 3.1.1?

Hãy cho tôi biết nếu bạn cần thêm thông tin và cảm ơn sự trợ giúp!

+0

Tôi đã thực sự gặp sự cố này và tôi đã có thể khắc phục sự cố bằng cách sửa đổi poms. Bạn có thể đăng POM của bạn để tôi có thể xem và cho bạn thấy những gì cần thay đổi? Nếu đó là dữ liệu nhạy cảm của công ty, hãy thay đổi tên gói thành tên khác. – EpicOfChaos

Trả lời

24

Câu trả lời kết thúc là khá đơn giản và tôi đang tự đá một chút cho nó. Trong tập tin pom của webapp, tôi chỉ phải thêm dòng phạm vi phụ thuộc ejb:

<dependency> 
    <groupId>com.groupId</groupId> 
    <artifactId>webservice-service-ejbs</artifactId> 
    <version>${project.version}</version> 
    <type>ejb</type> 
    <scope>provided</scope> 
</dependency> 

Với điều này, tôi có thể tiếp tục phụ thuộc ejb trong pom tai, application.xml tạo đúng cách và GlassFish 3.1.1 không bối rối khi nghĩ rằng có nhiều lớp ejb có cùng tên.

EDIT: Đây là những gì phụ thuộc ejb trông giống như trong pom tai

<dependency> 
    <groupId>com.groupId</groupId> 
    <artifactId>webservice-service-ejbs</artifactId> 
    <type>ejb</type> 
</dependency> 

Nhờ có những người đã giúp tôi ra ngoài.

+2

bạn có thể cung cấp sự phụ thuộc ejb của bạn trong mã pom tai. – curious

+1

chắc chắn. xin lỗi vì phản hồi muộn, đã không đăng nhập trong một thời gian. – lowell

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