2013-02-12 18 views
8

Sto tentando di passare da WSO2 Carbon 3.0.0 a Carbon 4.0.3. Utilizzando Carbon 3.0.0, dopo aver installato le funzionalità necessarie, sono in grado di scrivere i servizi JavaScript Mashup che possono chiamare librerie Java esterne - e poiché WSO2 Carbon utilizza Rhino, sono in grado di utilizzare importPackage. Non sono stato in grado di ottenere la stessa funzionalità su Carbon 4.0.3.Come posso risolvere "I pacchetti non sono definiti" in WSO2 Carbon 4.0.3 con le funzionalità del server delle applicazioni?

La procedura che ho seguito è:

  1. Scaricare e decomprimere WSO2 Carbon 4.0.3
  2. Inizio carbonio
  3. Accedere alla pagina "Funzione di gestione"
  4. Aggiungere il 4.0.3 Deposito di CO2 p2 (http://dist.wso2.org/p2/carbon/releases/4.0.3/)
  5. Cerca e installa la funzionalità "Server applicazioni"
  6. Riavvia Carbon
  7. Distribuisci il mio servizio di prova Mashup
  8. Esegui l'operazione di eco del mio servizio di test Mashup utilizzando lo strumento "tryit".

Il mio servizio di prova Mashup (TestMashup.js):

this.serviceName = "TestMashup"; 

echo.inputTypes = "#raw"; 
echo.outputType = "#raw"; 
function echo(parameter) { 
    var javaDate = new Packages.java.util.Date(); 
    var response = "<echo><value>" + parameter.toXMLString() + "</value><timestamp>" + javaDate.getTime() + "</timestamp></echo>"; 

    return new XML(response); 
} 

ho installato questo servizio Mashup per CARBON_HOME/repository/deployment/server/jsservices/admin/

Quando eseguo questa operazione su Carbon 3.0.0, ottengo la seguente risposta:

<echo> 
    <value> 
    <r>test</r> 
    </value> 
    <timestamp>1360699125311</timestamp> 
</echo> 

Quando si tenta di eseguire questa operazione su Carbon 4.0.3, ottengo t egli seguente stack-trace:

[2013-02-12 14:46:32,511] ERROR {org.jaggeryjs.scriptengine.engine.RhinoEngine} - org.mozilla.javascript.EcmaError: ReferenceError: "Packages" is not defined.(//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js#6) 
[2013-02-12 14:46:32,512] ERROR {org.jaggeryjs.scriptengine.engine.RhinoEngine} - org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.EcmaError: ReferenceError: "Packages" is not defined. (//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js#6) 
[2013-02-12 14:46:32,512] ERROR {org.apache.axis2.receivers.AbstractMessageReceiver} - org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.EcmaError: ReferenceError: "Packages" is not defined. (//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js#6) 
org.apache.axis2.AxisFault: org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.EcmaError: ReferenceError: "Packages" is not defined.(//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js#6) 
     at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 
     at org.wso2.carbon.mashup.javascript.messagereceiver.JavaScriptEngine.call(JavaScriptEngine.java:176) 
     at org.wso2.carbon.mashup.javascript.messagereceiver.JavaScriptEngine.call(JavaScriptEngine.java:208) 
     at org.wso2.carbon.mashup.javascript.messagereceiver.JavaScriptReceiver.invokeBusinessLogic(JavaScriptReceiver.java:185) 
     at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40) 
     at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110) 
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181) 
     at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172) 
     at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146) 
     at org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:231) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
     at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) 
     at org.wso2.carbon.mashup.jsservices.custom.ui.CustomUIServletFilter.doFilter(CustomUIServletFilter.java:233) 
     at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) 
     at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90) 
     at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111) 
     at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
     at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
     at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:172) 
     at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
     at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
Caused by: org.jaggeryjs.scriptengine.exceptions.ScriptException: org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.EcmaError: ReferenceError: "Packages" is not defined. (//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js#6) 
     at org.jaggeryjs.scriptengine.engine.RhinoEngine.execFunc(RhinoEngine.java:383) 
     at org.jaggeryjs.scriptengine.engine.RhinoEngine.call(RhinoEngine.java:251) 
     at org.wso2.carbon.mashup.javascript.messagereceiver.JavaScriptEngine.call(JavaScriptEngine.java:169) 
     ... 40 more 
Caused by: org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.EcmaError: ReferenceError: "Packages" is not defined. (//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js#6) 
     at org.jaggeryjs.scriptengine.engine.RhinoEngine.execFunc(RhinoEngine.java:401) 
     at org.jaggeryjs.scriptengine.engine.RhinoEngine.execFunc(RhinoEngine.java:380) 
     ... 42 more 
Caused by: org.mozilla.javascript.EcmaError: ReferenceError: "Packages" is not defined. (//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js#6) 
     at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3557) 
     at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3535) 
     at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3620) 
     at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1652) 
     at org.jaggeryjs.rhino.c0._c1(//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js:6) 
     at org.jaggeryjs.rhino.c0.call(//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js) 
     at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401) 
     at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003) 
     at org.jaggeryjs.rhino.c0.call(//C:\WSO2CA~1\WSO2CA~1.3\bin\..\repository\deployment\server\jsservices\admin\TestMashup.js) 
     at org.jaggeryjs.scriptengine.engine.RhinoEngine.execFunc(RhinoEngine.java:398) 
     ... 43 more 

Come posso risolvere questo problema in modo che possa continuare a utilizzare librerie Java dai miei servizi Javascript Mashup?

risposta

1

Il codice che consentiva a questa funzione di funzionare è stato disabilitato.

ho trascorso qualche tempo guardando attraverso il repository SVN di carbonio e ha scoperto che la componente message-receiver mashup è stata modificata in modo tale che impedisce servizi JavaScript Mashup di essere creato con una ImporterTopLevel contesto. Questo è direttamente visibile in org.wso2.carbon.mashup.javascript.messagereceiver.JavaScriptEngine, dove le versioni precedenti estendono ImporterTopLevel ma le versioni più recenti no. Per riferimento futuro, questa modifica è stata confermata con la revisione 129254.

Sono riuscito a unire il codice ImporterTopLevel da 3.2.2 nella versione 4.0.3 di messagereceiver per risolvere il problema.

-1

Quando si installano le funzionalità richieste sul server Carbon, verificare se nella console sono presenti errori. Potrebbero esserci alcuni problemi di dipendenza. E dopo aver installato le funzionalità, avviare WSO2 AS con il comando ./wso2server.sh -DosgiConsole e utilizzare il comando ss e il comando comp per verificare se esistono dipendenze OSGi non risolte. Se ce ne sono, prova a inserire i pacchetti richiesti nel repository/components/dropins e riavvia il server.

E inoltre non sono sicuro se l'installazione della funzionalità Server applicazioni consentirà solo i requisiti di Mashup. Pertanto in quel repository vedi se sono disponibili funzionalità relative a Mashup Server. Se è così, installali pure. Sembra che nel tuo server, l'oggetto host "Pacchetti", abbia qualche problema.

Quando non si installano alcune funzionalità a causa di problemi di dipendenza, è possibile provare a mettere i pacchetti richiesti nella directory dei drop. E se anche questo dovesse fallire, potrebbe essere necessario eseguire il checkout del codice relativo a quel componente e portarlo alla versione del server.

+0

SS mostra tutti i moduli come INSTALLATO, ATTIVO o RISOLTO. C'è qualcosa di specifico che sto cercando? In realtà non vedo alcuna caratteristica che identifica "Mashup Server"; è a mia conoscenza che il server Mashup è integrato nel server delle applicazioni. Cosa devo installare per ottenere questa funzionalità? – GamerJosh

+0

Vedere i documenti OSGi nel web per i comandi OSGi. Usando diag [id_showed_in_ss_command] puoi esplorare se ci sono problemi con ogni elemento mostrato nel comando ss. Se non esiste alcuna funzionalità simile a Mashup Server, verificare se vi sono funzionalità con nomi come Oggetto host. AFAIK Mashup Server è pieno di Application Server solo dopo che il server Mashup è stato abbandonato. In precedenza esisteva un server separato chiamato Mashup Server. – Maninda

+0

Maninda - puoi almeno confermare che questo funziona per te? O dovrebbe funzionare ancora ??? –