আমার কাছে চারটি বান্ডিল রয়েছে, প্রত্যেকটিতে কেবল একটি ম্যানিফেস্ট রয়েছে। বান্ডিলগুলি হয়
app
যা আমদানি করেcom.example.foo.fragment
এবংcom.example.bar
foo
যা রফতানি করেcom.example.foo;uses:=com.example.foo.cfg
foo.fragment
যাfoo
রফতানির সাথে সংযুক্ত একটি খণ্ডcom.example.foo.fragment
এবংcom.example.foo.fragment.cfg;uses:=com.example.foo.fragment
bar
যা রফতানিcom.example.bar
এবং আমদানি করেcom.example.foo
বান্ডিল-স্তর নির্ভরতা গ্রাফ :
app -> bar
| |
| v
| foo
| |
v v
foo.fragment
আমি যখন এই বান্ডিলগুলি একবার JBoss AS 7.2 এ ইনস্টল করি তখন তারা ঠিক কাজ করে। তবে আমি যদি প্রথমবারের জন্য বা সফলভাবে শুরু করার পরে এবং পরে এটি আনইনস্টল করার পরে অন্যদের পরেapp
বান্ডিলটি ইনস্টল করি তবে নিম্নলিখিত ব্যবহারের সীমাবদ্ধতা লঙ্ঘন ঘটে:
Caused by: org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource com.example.app [HostBundleRevision[com.example.app:0.0.
0]] because it is exposed to package 'com.example.foo.fragment' from resources com.example.foo [HostBundleRevision[com.example.foo:0.0.0]] and com.example.foo [HostBund
leRevision[com.example.foo:0.0.0]] via two dependency chains.
Chain 1:
com.example.app [HostBundleRevision[com.example.app:0.0.0]]
import: null
|
export: osgi.wiring.package=com.example.foo.fragment
com.example.foo [HostBundleRevision[com.example.foo:0.0.0]]
Chain 2:
com.example.app [HostBundleRevision[com.example.app:0.0.0]]
import: null
|
export: osgi.wiring.package=com.example.bar; uses:=com.example.foo
com.example.bar [HostBundleRevision[com.example.bar:0.0.0]]
import: null
|
export: osgi.wiring.package=com.example.foo; uses:=com.example.foo.fragment
export: osgi.wiring.package=com.example.foo.fragment
com.example.foo [HostBundleRevision[com.example.foo:0.0.0]]
at org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1142)
at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:197)
at org.jboss.osgi.resolver.felix.StatelessResolver.resolve(StatelessResolver.java:56)
at org.jboss.osgi.framework.internal.ResolverImpl.resolveAndApply(ResolverImpl.java:137)
at org.jboss.as.osgi.service.BundleLifecycleIntegration$BundleLifecycleImpl.activateDeferredPhase(BundleLifecycleIntegration.java:296)
... 31 more
সম্পূর্ণ প্রকাশগুলি হ'ল:
app.jar/META-INF/MANIFEST.MF
----------------------------
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.example.app
Import-Package: com.example.foo.fragment,com.example.bar
----------------------------
foo.jar/META-INF/MANIFEST.MF
----------------------------
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.example.foo
Export-Package: com.example.foo;uses:="com.example.foo.cfg"
-------------------------------------
foo.fragment.jar/META-INF/MANIFEST.MF
-------------------------------------
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.example.foo.fragment
Fragment-Host: com.example.foo
Export-Package: com.example.foo.fragment,com.example.foo.cfg;uses:="co
m.example.foo.fragment"
----------------------------
bar.jar/META-INF/MANIFEST.MF
----------------------------
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.example.bar
Export-Package: com.example.bar;uses:="com.example.foo"
Import-Package: com.example.foo
আমি স্বতন্ত্র অ্যাপাচি ফেলিক্স ৪.২.১ এ উপরের ত্রুটিটি পুনরুত্পাদন করতে সক্ষম হইনি।
এই আচরণের কারণ কী? যদি আমি ম্যানিফেস্ট Fragment-Host: com.example.foo
থেকে সারিটি মোছা করি foo.fragment
, আমি app
ত্রুটি ছাড়াই ঠিক জরিমানা পুনরায় ইনস্টল করতে পারি । এটি কি জবস এএস 7.2 তে একটি বাগ আছে?
org.hibernate.annotations
, এবং ওএসজি প্ল্যাটফর্মটি সমাধান করে যে ওএসজি প্ল্যাটফর্মটি আমার অ্যাপ্লিকেশন ব্যতীত শুরু হলে স্প্রিং ওআরএম বান্ডেলের নির্ভরতা হিসাবে। তারপরে আমি আমার অ্যাপ্লিকেশন স্থাপন করি এবং ওএসজিআই এটি সমাধান করতে ব্যর্থ হয় কারণ এটি org.hibernate.annotations
স্প্রিং ওআরএম বান্ডেলে সমাধান করা বান্ডেলের সাথে সামঞ্জস্যপূর্ণ নয় । এটা কি সাধ্য আছে?
org.hibernate.annotations
করা একটি খণ্ড Fragment-Host: com.springsource.org.hibernate
।