我在Fuse中有一个CXF Web服务应用程序,并且它在驼峰上下文xml文件中获取了一个包含从WSDL生成的文件的jar的引用。OSGi maven-bundle-plugin忽略我的包
<cxf:cxfEndpoint id="LookupEndpoint"
address="${my.LookupUri}"
serviceClass="com.whatever.IWebService"
wsdlURL="wsdl/MyWsdl.wsdl"/>
com.whatever.*
是我<Import-Package>
名单。该jar在我的maven依赖项中。我可以说import com.whatever.IWebService;
,它不会抱怨。
但行家束-插件不包含此包中的MANIFEST.MF
它包含了我所要求的一切我包等。但不是这个。所以在Fuse中,当我部署它时,我得到了ClassNotFoundException,引用了context.xml类的加载。
这是非常令人沮丧的。有没有办法强制插件导入某个包?因为他们的自动神奇依赖求解器无视我<Import-Package>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${version.maven-bundle-plugin}</version>
<extensions>true</extensions>
<configuration>
<manifestLocation>src/main/resources/META-INF</manifestLocation>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Import-Package>
*,
com.imports.this.one.fine*,
com.imports.this.one.just.fine*,
com.imports.does.not.import.this.one.*,
</Import-Package>
<Export-Package>
com.something.export.*
</Export-Package>
</instructions>
</configuration>
</plugin>
Hi Neil,这个想法是我们将WSDLs及其生成的类存储在捆绑包中。但他们只是像共享库。然后我们有服务,它使用共享库中的类来公开端点。 (它的工作原理。)但是只有当这些包在MANIFEST.MF中。我会检查现在是否随机实例化代码中的服务类修正了这个... – djb
就是这样。 ObjectFactory of = new ObjectFactory(); ***** OSGi的儿子。谢谢你 – djb
不知道我很高兴你把OSGi称为“*****的儿子”!首先,问题不是OSGi,而是其中一个构建工具,maven-bundle-plugin。其次,它所做的事情是有记录的,非常合理。 –