在OSGi中使用JSP时无法启动片段包

时间:2013-01-18 05:33:59

标签: java jsp osgi bundle fragment

所以,我正在尝试使用JSP和JSTL来构建用于OSGi环境的UI。我已经为JSTL添加了所需的捆绑包: -

我还在环境中添加了所有必需的包。最后,解决了以下依赖关系,我最终添加了太多的bundle,但我一度陷入困境。

我的一个包(我认为这是一个片段),没有开始,它的依赖性没有得到解决。我得到的异常是: -

org.osgi.framework.BundleException: A fragment bundle cannot be started: com.springsource.org.apache.jasper_7.0.26 [107]

在此例外之后,我还有一个例外: -

org.osgi.framework.BundleException: The bundle "org.eclipse.equinox.jsp.jasper_1.0.0.v20070607 [117]" could not be resolved. Reason: Missing Constraint: Import-Package: org.apache.jasper.servlet; version="0.0.0"

我已经按照已安装的捆绑包列表,其中一些不是Active: -

id  State       Bundle
0   ACTIVE      org.eclipse.osgi_3.7.1.R37x_v20110808-1106
6   ACTIVE      org.eclipse.persistence.core_2.3.2.v20111125-r10461
10  ACTIVE      javax.persistence_2.0.3.v201010191057
12  ACTIVE      org.eclipse.persistence.antlr_2.3.2.v20111125-r10461
15  ACTIVE      org.eclipse.persistence.jpa.jpql_2.0.1.v20121003-ad44345
16  ACTIVE      org.eclipse.persistence.asm_2.3.2.v20111125-r10461
21  ACTIVE      org.eclipse.persistence.jpa_2.3.2.v20111125-r10461
25  ACTIVE      StockControlSystem_0.0.1
28  ACTIVE      javax.annotation_1.1.0.v201105051105
32  ACTIVE      org.springframework.core_3.0.5.RELEASE
33  ACTIVE      org.springframework.aop_3.0.5.RELEASE
34  ACTIVE      com.scs.request_1.0.0.qualifier
35  ACTIVE      org.eclipse.virgo.util.common_3.0.1.RELEASE
37  ACTIVE      com.scs.order_1.0.0.qualifier
38  ACTIVE      org.springframework.osgi.io_1.2.1
41  ACTIVE      mysql.jdbc_1.0.0
45  ACTIVE      com.springsource.org.apache.tomcat.api_7.0.26
47  ACTIVE      org.springframework.osgi.core_1.2.1
48  ACTIVE      com.springsource.org.apache.commons.logging_1.1.1
49  ACTIVE      com.springsource.org.eclipse.jdt.core.compiler.batch_3.6.1
53  ACTIVE      com.scs.persistence_1.0.0.qualifier
55  ACTIVE      com.scs.stockdetails_1.0.0.qualifier
58  ACTIVE      com.scs.delivery_1.0.0.qualifier
59  ACTIVE      org.springframework.beans_3.0.5.RELEASE
60  ACTIVE      org.springframework.context_3.0.5.RELEASE
66  ACTIVE      joda.time_1.0.0
67  ACTIVE      com.springsource.org.aopalliance_1.0.0
71  ACTIVE      javax.servlet_3.0.0.v201103241009
72  ACTIVE      com.springsource.org.apache.xmlcommons_1.3.4
73  ACTIVE      javax.el_2.2.0.v201105051105
74  ACTIVE      javax.servlet.jsp_2.2.0.v201103241009
75  ACTIVE      com.springsource.javax.servlet.jsp.jstl_1.2.0.v20110728
76  ACTIVE      org.eclipse.osgi.services_3.3.0.v20110513
78  ACTIVE      com.springsource.javax.xml.soap_1.3.0
80  RESOLVED    com.springsource.org.apache.coyote_7.0.26
                Master=83
81  ACTIVE      com.springsource.javax.activation_1.1.1
82  ACTIVE      com.springsource.javax.mail_1.4.0
83  ACTIVE      com.springsource.org.apache.catalina_7.0.26
                Fragments=80, 88, 95, 97
84  ACTIVE      com.springsource.javax.persistence_1.0.0
88  RESOLVED    com.springsource.org.apache.catalina.ha_7.0.26
                Master=83
92  ACTIVE      org.eclipse.virgo.util.parser.manifest_3.0.1.RELEASE
93  ACTIVE      com.springsource.org.apache.juli.extras_7.0.26
95  RESOLVED    com.springsource.org.apache.catalina.tribes_7.0.26
                Master=83
97  RESOLVED    com.springsource.org.apache.tomcat.util_7.0.26
                Master=83
100 ACTIVE      com.springsource.javax.ejb_3.0.0
101 ACTIVE      com.springsource.javax.xml.rpc_1.1.0.v20110517
102 ACTIVE      org.eclipse.equinox.util_1.0.300.v20110502
103 ACTIVE      org.eclipse.equinox.ds_1.3.0.v20110502
104 ACTIVE      com.springsource.slf4j.api_1.6.1
                Fragments=113
105 ACTIVE      org.eclipse.virgo.util.math_3.0.1.RELEASE
106 ACTIVE      org.eclipse.virgo.util.io_3.0.1.RELEASE
107 INSTALLED   com.springsource.org.apache.jasper_7.0.26
108 ACTIVE      com.springsource.javax.transaction_1.1.0
109 ACTIVE      org.eclipse.virgo.util.osgi_3.0.1.RELEASE
110 ACTIVE      org.eclipse.gemini.web.tomcat_2.0.2.RELEASE
111 ACTIVE      org.eclipse.gemini.web.core_2.0.2.RELEASE
112 ACTIVE      com.springsource.javax.xml.bind_2.1.7
113 RESOLVED    com.springsource.slf4j.nop_1.6.1
                Master=104
114 ACTIVE      com.springsource.javax.xml.stream_1.0.1
115 ACTIVE      org.eclipse.gemini.web.extender_2.0.2.RELEASE
116 ACTIVE      com.springsource.org.apache.el_7.0.26
117 INSTALLED   org.eclipse.equinox.jsp.jasper_1.0.0.v20070607

因此,您可以看到,Bundle 107 - com.springsource.org.apache.jasper_7.0.26处于已安装状态,我认为其中包含Missing-Import包的equinox.jsp.jasper包 - {{1} }

经过一些研究,我发现,我需要添加更多的包: -

  • Bundle 117
  • catalina.osgi (5.5.23-SNAPSHOT)
  • jasper.osgi (5.5.23-SNAPSHOT)

其中,我找到了第3个捆绑包,但我找不到前2个捆绑包。

任何人都可以看到发生了什么。我在某个地方做错了什么吗?或者我错过了添加一些捆绑?在过去的两天里,我一直陷入这个问题,我想,我决不会解决这个问题。

我认为可能重要的另一件事是,当我尝试启动com.springsource.org.apache.taglibs.standard (1.1.2)捆绑包时,我收到了这些警告 - Web APP: -

Bundle 25

还有更多这样的警告,但我已经跳过了它们,因为它们太多了。

我添加了尽可能多的信息,我认为是需要的。但是,如果你 需要更多信息,请同样询问。

2 个答案:

答案 0 :(得分:2)

首先,片段永远无法启动,因为它们没有自己的生命周期。所以这不是一个错误;你不应该试着开始片段。

其次,看起来捆绑包117确实失败了,因为缺少包org.apache.jasper.servlet的导入,并且这个包可能来自不解析的片段107。所以挑战在于找出107无法解决的问题。您可以通过输入命令diag 107来获得关于此的线索;这将打印片段的未满足导入列表。

答案 1 :(得分:0)

对你来说可能不太愉快,但如果你使用Pax-Web而不是Gemini,它会立即使用jsp。

可以在http://www.google.de/url?sa=t&rct=j&q=pax%20web&source=web&cd=1&cad=rja&ved=0CDcQFjAA&url=http%3A%2F%2Fteam.ops4j.org%2Fwiki%2Fdisplay%2Fpaxweb%2FPax%2BWeb&ei=-WT6UITsL4mItQbw_IGICA&usg=AFQjCNFWWNAvM4nxEqoqVnlL14P3gt2aLw&sig2=Q7fVwc6mjMN68ErFbhTDEA&bvm=bv.41248874,d.Yms

找到Pax-Web

在我看来,就像你正在建造一个完整的容器一样。有没有考虑使用Apache Karaf或Eclipse Virgo? Karaf也可以使用最小的集合,只包含基础知识。