2014-02-07 3 views
1

У меня есть (намеренно созданная ситуация для проверки моей установки CI) пакет, который неправильно настроил все зависимости. Когда я раскрываю, что развертывание терпит неудачу с исключением, как это должно:Статус пакета ServiceMix «активен», даже если развертывание пакетов не выполняется.

2014-02-07 09:17:15,738 | ERROR | rint Extender: 3 | BlueprintCamelContext   | 103 - org.apache.camel.camel-blueprint - 2.10.7 | Error occurred during starting Camel: CamelContext(ura) due "org.xmlsoap.schemas.soap.envelope" doesnt contain ObjectFactory.class or jaxb.index 
javax.xml.bind.JAXBException: "org.xmlsoap.schemas.soap.envelope" doesnt contain ObjectFactory.class or jaxb.index 
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:197) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_11] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_11] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_11] 
    at java.lang.reflect.Method.invoke(Method.java:601)[:1.7.0_11] 
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:143)[89:org.apache.servicemix.specs.jaxb-api-2.2:2.2.0] 
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:310)[89:org.apache.servicemix.specs.jaxb-api-2.2:2.2.0] 
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:412)[89:org.apache.servicemix.specs.jaxb-api-2.2:2.2.0] 
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:375)[89:org.apache.servicemix.specs.jaxb-api-2.2:2.2.0] 
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:279)[89:org.apache.servicemix.specs.jaxb-api-2.2:2.2.0] 
    at org.apache.camel.dataformat.soap.SoapJaxbDataFormat.createContext(SoapJaxbDataFormat.java:303)[206:org.apache.camel.camel-soap:2.10.7] 
    at org.apache.camel.converter.jaxb.JaxbDataFormat.doStart(JaxbDataFormat.java:254)[187:org.apache.camel.camel-jaxb:2.10.7] 
    at org.apache.camel.dataformat.soap.SoapJaxbDataFormat.doStart(SoapJaxbDataFormat.java:101)[206:org.apache.camel.camel-soap:2.10.7] 
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)[100:org.apache.camel.camel-core:2.10.7] 
    at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62) 

Проблема заключается в том, что статус расслоения по-прежнему «Активный». Зачем?

[email protected]> osgi:list 
START LEVEL 100 , List Threshold: 50 
    ID State   Blueprint  Spring Level Name 
[ 242] [Active  ] [Created  ] [  ] [ 80] integraatiot-foo (1.0.0.SNAPSHOT) 

Я хотел бы настроить мой CI строит, что они обнаруживают неудачные связки с помощью http://code.citytechinc.com/osgi-bundle-status-maven-plugin/. Эта идея терпит неудачу, поскольку статус пакета всегда «активен».

ответ

0

Вам необходимо убедиться, что все ваши зависимости требуются и с правильной версией. В этом случае может произойти, что пакет, импортируемый вами, существует в неправильной версии. Или лучше, если вы уверены, что импортируете только правую версию пакета с помощью [2,3.0). Особенно трассировка стека вызывает у меня подозрение, что вы используете импорт без диапазона версий и, следовательно, импортируете классы jaxb JRE, которые обычно имеют версию 0.0.0
Чтобы проверить, какие пакеты действительно используются для импорта журнала в оболочке, и выполните bundle: header [bundleID]

+0

Я думаю, вы неправильно поняли. Проблема заключается не в том, что развертывание завершается неудачно, то есть намеренно. Проблема заключается в том, что ServiceMix думает и говорит, что пакет является «активным», хотя развертывание завершилось неудачно, и пакет не запущен. –

+0

Если OSGi Framework говорит, что Bundle активен, все зависимости разрешаются. Поэтому в вашем Import-Package отсутствует диапазон версий, поэтому ваш пакет не работает. –

1

Пакет активен, потому что он активирован. Это нормально. Если в некотором коде произошла ошибка, в пределах комплект, который не имеет никакого отношения к активному состоянию OSGi.

Так что вам нужно найти способ сообщить о своем внутреннем сбое, чтобы его можно было собрать с помощью сборки CI. Я предлагаю использовать OSGi LogService.

 Смежные вопросы

  • Нет связанных вопросов^_^