jueves, 24 de septiembre de 2015

WSO2 IDE Developer Studio. Ejemplo de uso.

image

En esta entrada quiero como se dice por acá, “matar 2 pájaros de un tiro” así que aprovecho un ejemplo de los muchos que están definidos en el WSO2 ESB y explico como desarrollarlo usando el IDE de WSO2, el Developer Studio.

Para este caso en particular, usaré el ejemplo 751, que nos permite adentrarnos en como usar los templates para definir secuencias y usarlas en un servicio proxy que implementa el patrón Split/Aggregate. El ejemplo 751 se deriva del ejemplo 400 sin templates

La idea es muy sencilla, queremos enviar un mensaje que en su payload contiene varios elementos similares en cuanto a su estructura pero con diferente contenido. Por cada uno de estos elementos queremos iterar y hacer la invocación a un servicio, las respuestas a dichas peticiones deben ser recuperadas por el ESB y agregadas hasta obtener un mensaje que contenga todas las respuestas recibidas.

Un ejemplo de mensaje de entrada es el siguiente:
<?xml version='1.0' encoding='UTF-8'?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
         <wsa:To>http://localhost:5555/services/SplitAggregateProxy</wsa:To>
         <wsa:MessageID>urn:uuid:a234aff3-c645-4bac-8557-4372e9363963</wsa:MessageID>
         <wsa:Action>urn:getQuote</wsa:Action>
      </soapenv:Header>
      <soapenv:Body>
         <m0:getQuote xmlns:m0="http://services.samples">
            <m0:request>
               <m0:symbol>IBM</m0:symbol>
            </m0:request>
            <m0:request>
               <m0:symbol>IBM</m0:symbol>
            </m0:request>
            <m0:request>
               <m0:symbol>IBM</m0:symbol>
            </m0:request>
            <m0:request>
               <m0:symbol>IBM</m0:symbol>
            </m0:request>
         </m0:getQuote>
      </soapenv:Body>
   </soapenv:Envelope>

Y el mensaje de salida debe tener una estructura como la siguiente:

<?xml version='1.0' encoding='UTF-8'?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Body>
         <ns:getQuoteResponse xmlns:ns="http://services.samples">
            <ns:return xmlns:ax21="http://services.samples/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:GetQuoteResponse">
               <ax21:change>4.012088542808684</ax21:change>
               <ax21:earnings>13.46795609831801</ax21:earnings>
               <ax21:high>-178.2453541108561</ax21:high>
               <ax21:last>181.0176201634284</ax21:last>
               <ax21:lastTradeTimestamp>Tue Sep 22 22:57:00 EDT 2015</ax21:lastTradeTimestamp>
               <ax21:low>-179.93913725956736</ax21:low>
               <ax21:marketCap>-8620998.350687156</ax21:marketCap>
               <ax21:name>IBM Company</ax21:name>
               <ax21:open>-176.56347085172354</ax21:open>
               <ax21:peRatio>-17.917903631277916</ax21:peRatio>
               <ax21:percentageChange>-2.2808226783817926</ax21:percentageChange>
               <ax21:prevClose>-175.90532490036432</ax21:prevClose>
               <ax21:symbol>IBM</ax21:symbol>
               <ax21:volume>7194</ax21:volume>
            </ns:return>
         </ns:getQuoteResponse>
         <ns:getQuoteResponse xmlns:ns="http://services.samples">
            <ns:return xmlns:ax21="http://services.samples/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:GetQuoteResponse">
               <ax21:change>-2.450131414478575</ax21:change>
               <ax21:earnings>12.077240152328338</ax21:earnings>
               <ax21:high>189.43591761923946</ax21:high>
               <ax21:last>184.23135540409237</ax21:last>
               <ax21:lastTradeTimestamp>Tue Sep 22 22:57:00 EDT 2015</ax21:lastTradeTimestamp>
               <ax21:low>190.25599396746426</ax21:low>
               <ax21:marketCap>-4659673.483194811</ax21:marketCap>
               <ax21:name>IBM Company</ax21:name>
               <ax21:open>189.4323001114281</ax21:open>
               <ax21:peRatio>-19.076556985138353</ax21:peRatio>
               <ax21:percentageChange>1.3385382641199597</ax21:percentageChange>
               <ax21:prevClose>-183.04530248819202</ax21:prevClose>
               <ax21:symbol>IBM</ax21:symbol>
               <ax21:volume>17825</ax21:volume>
            </ns:return>
         </ns:getQuoteResponse>
         <ns:getQuoteResponse xmlns:ns="http://services.samples">
            <ns:return xmlns:ax21="http://services.samples/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:GetQuoteResponse">
               <ax21:change>-2.7759188649691673</ax21:change>
               <ax21:earnings>-8.64434464779646</ax21:earnings>
               <ax21:high>-155.45059265458414</ax21:high>
               <ax21:last>159.0026910255047</ax21:last>
               <ax21:lastTradeTimestamp>Tue Sep 22 22:57:00 EDT 2015</ax21:lastTradeTimestamp>
               <ax21:low>-158.61618247180033</ax21:low>
               <ax21:marketCap>4.113991018136966E7</ax21:marketCap>
               <ax21:name>IBM Company</ax21:name>
               <ax21:open>-156.0220318241818</ax21:open>
               <ax21:peRatio>23.020000568172797</ax21:peRatio>
               <ax21:percentageChange>1.7496688693602924</ax21:percentageChange>
               <ax21:prevClose>-158.65395524720563</ax21:prevClose>
               <ax21:symbol>IBM</ax21:symbol>
               <ax21:volume>18187</ax21:volume>
            </ns:return>
         </ns:getQuoteResponse>
         <ns:getQuoteResponse x372mlns:ns="http://services.samples">
            <ns:return xmlns:ax21="http://services.samples/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:GetQuoteResponse">
               <ax21:change>-2.9541965411380096</ax21:change>
               <ax21:earnings>12.143751209259607</ax21:earnings>
               <ax21:high>69.9594258475836</ax21:high>
               <ax21:last>68.14101070190179</ax21:last>
               <ax21:lastTradeTimestamp>Tue Sep 22 22:57:00 EDT 2015</ax21:lastTradeTimestamp>
               <ax21:low>70.62760392392916</ax21:low>
               <ax21:marketCap>-303514.44638798386</ax21:marketCap>
               <ax21:name>IBM Company</ax21:name>
               <ax21:open>-67.33049800682211</ax21:open>
               <ax21:peRatio>24.510801203367894</ax21:peRatio>
               <ax21:percentageChange>4.591238624436207</ax21:percentageChange>
               <ax21:prevClose>-64.34421694866225</ax21:prevClose>
               <ax21:symbol>IBM</ax21:symbol>
               <ax21:volume>5049</ax21:volume>
            </ns:return>
         </ns:getQuoteResponse>
      </soapenv:Body>
   </soapenv:Envelope>


Veamos como se hace, manos a la obra!!!!


Paso 1: Crear el proyecto en el IDE.


Una vez iniciado el IDE, basado en Eclipse, debemos ir al Dashboard de WSO2.


image


En este dashboard veremos varias facilidades, la que nos interesa ahora es “ESB Config Project”


image


Damos clic y creamos un proyecto nuevo.


image


Definimos un nombre, en mi caso fue “ESB4.9.0SynapseConfig” y al dar clic en Finish tendremos lo siguiente:


image


Como pueden ver tenemos las estructuras para definir los principales artefactos del WSO2 ESB.


Paso 2: Inicio de la creación del proxy.


Guiándonos por el ejemplo procedemos a crear el proxy, al menos su cascaron.


Damos clic derecho encima de “proxy-service” y realizamos las acciones que aparecen en la siguiente imagen.


image


Llegaremos a la siguiente ventana donde definimos el nombre del proxy y el tipo, luego damos clie en Finish.


image


Llegado a este punto ya el proxy está creado en el IDE.


image


Como las secuencias de entrada y salida usan el mediador “call-template” dejaremos el proxy así por el momento y crearemos los template de las secuencias que usaremos.


Paso 3: Creación de las secuencias.


Para crear los template damos clic derecho en “templates” y realizamos las acciones que aparecen en la siguiente imagen.


image


Definimos un nombre, usando lo especificado en el ejemplo y llegamos a la siguiente configuración inicial para el template “aggr_func”


image


Los siguientes pasos involucran agregar los mediadores, para lo cual los invito a hacer uso de la Paleta de componentes que aparece en la imagen de arriba a la izquierda. Deben de tener algo como lo siguiente al terminar.


image

El XML de este template debe ser el siguiente
<template xmlns="http://ws.apache.org/ns/synapse" name="aggr_func">
        <parameter name="aggr_expr"/>
        <sequence>
            <log level="full"/>
            <aggregate>
                <completeCondition>
                    <messageCount min="-1" max="-1"/>
                </completeCondition>
                <onComplete expression="$func:aggr_expr">
                    <log level="full" />
                    <send/>
                </onComplete>
            </aggregate>
        </sequence>
    </template>


Ahora procedemos a crear el template de la secuencia encargada de realizar la iteración. Que nos debe quedar como sigue.


image


El XML de la misma será el siguiente

<template xmlns="http://ws.apache.org/ns/synapse" name="iter_func">
        <parameter name="iter_expr"/>
        <parameter name="attach_path"/>
        <sequence>
            <iterate  xmlns:m0="http://services.samples" preservePayload="true" attachPath="$func:attach_path" expression="$func:iter_expr">
                <target>
                    <sequence>
                        <send>
                            <endpoint>
                                <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                            </endpoint>
                        </send>
                    </sequence>
                </target>
            </iterate>
        </sequence>
    </template>


Paso 4: Ajustes finales en el proxy.


Una vez creados los 2 templates ya podemos actualizar nuestro proxy, quedandonos de la siguiente manera.


image


Su XML es el siguiente:

<proxy name="SplitAggregateProxy">
        <target>
            <inSequence>
                <call-template target="iter_func">
                        <with-param xmlns:m0="http://services.samples" name="iter_expr" value="{{//m0:getQuote/m0:request}}"/>
    <with-param xmlns:m0="http://services.samples" name="attach_path" value="{{//m0:getQuote}}"/>
                </call-template>
            </inSequence>
            <outSequence>
                <call-template target="aggr_func">
                        <with-param xmlns:m0="http://services.samples" name="aggr_expr" value="{{//m0:getQuoteResponse}}"/>
                </call-template>
            </outSequence>
        </target>
    </proxy> 


Para probar el proxy debemos seguir las indicaciones descritas en el ejemplo. Pero antes se debe desplegar en el ESB.


Paso 5: Despliegue del servicio.


Debemos crear un nuevo proyecto del tipo “Composite Application Project” haciendo uso del Dashboard del Developer Studio.


image


Seleccionamos la opción “Composite Application Project”


image


Definimos un nombre, y seleccionamos la dependencia de nuestro proyecto del ESB.

Una vez creado este proyecto se nos muestra lo siguiente.


image


Esto nos indica que tanto el proxy como los 2 templates generados serán desplegados en un servidor con el rol de EnterpriseServiceBus.


Ahora procedemos a generar el fichero que contendrá dichos artefactos. Damos clic derecho en el proyecto de “Composite Application Project” y seleccionamos la opción “Export Composite Application Project”.


image 


En la imagen verán que definí la ruta donde se despliegan las aplicaciones de carbon en el ESB, de esta manera tan pronto guarde el proyecto ahí se desplegarán los artefactos si todo ha ido bien.

Damos clic en Next.


image


Esto se queda como está y damos clic en Finish.


Si nos vamos al ESB y listamos los servicios veremos el servicio recién desplegado.


image


Y también comprobamos los templates para las secuencias.


image


De esta manera logramos realizar el despliegue de nuestros artefactos generados en el IDE en el servidor del WSO2 ESB.


Paso 6: Prueba del servicio.

Para probar el servicio primero debemos generar el backend a utilizar. Así que nos vamos a la ubicación [ESB_HOME]\samples\axis2Server\src\SimpleStockQuoteService\, levantamos un terminal y corremos el comando ant.


image


Luego nos vamos a la ubicación [ESB_HOME]\samples\axis2Server y levantamos el servidor de axis2 con el comando: axis2server.bat si estás en Windows, axis2server.sh si estás en Linux.


Para comprobar que el servicio esté corriendo pueden ver su wsdl en la siguiente URL: http://localhost:9000/services/SimpleStockQuoteService?wsdl


Ahora para terminar procedemos a la invocación del proxy. Para esto nos vamos a la ubicación [ESB_HOME]\samples\axis2Client y ejecutamos el siguiente comando:


ant stockquote -Daddurl=http://localhost:8280/services/SplitAggregateProxy -Ditr=4


En este caso no verán mucho que sea de fácil entender, por ese motivo he levantado un TCPMON, y configurado en escucha el puerto 5555 redireccionando para el puerto 8281, que en mi caso es por donde está escuchando el WSO2 ESB, al sumarle 1 a todos los puertos.


ant stockquote -Daddurl=http://localhost:5555/services/SplitAggregateProxy -Ditr=4


image


De esta manera es más fácil visualizar tanto el request como el response. Otra variante es usar el SOAPUI creando el request y especificando el SOAPAction correspondiente “urn:getQuote”


Si algo no les funciona o tienen dudas sobre el trabajo con los mediadores en el IDE me pueden dejar su comentario.

martes, 22 de septiembre de 2015

WSO2 Complex Event Processor: Nueva versión liberada


Como estamos en días de liberaciones de nuevas versiones de las herramientas pertenecientes a la suite de WSO2 aquí les vengo con otra más, bien fresquita.

La versión 4.0.0 del WSO2 Complex Event Processor fue liberada en el día de hoy al igual que su documentación actualizada.


Sus detalles son los siguientes:

New Features

  • [CEP-635] - Integrate Apache Storm into CEP
  • [CEP-852] - Event Simulator with sending multiple events using uploaded files
  • [CEP-879] - MQTT input Event Adapter for CEP
  • [CEP-880] - MQTT output Event Adapter for CEP
  • [CEP-881] - Input Websocket adapter for CEP
  • [CEP-885] - Time Series Regression Extension to Siddhi
  • [CEP-886] - Time Series Forecaster for Siddhi
  • [CEP-887] - Outlier Detection Extension for Siddhi
  • [CEP-888] - Initial storm solution for CEP
  • [CEP-903] - Siddhi - Remove callback from stream functionality
  • [CEP-909] - Input Websocket (with local websocket server) Adapter for CEP
  • [CEP-910] - Output Websocket Adapter for CEP
  • [CEP-911] - Output Websocket Adapter (using local websocket server) for CEP
  • [CEP-942] - Siddhi partition implementation
  • [CEP-945] - Improved Siddhi Query API and Compiler
  • [CEP-958] - Siddhi-core adding support for aggregated attributes
  • [CEP-959] - Siddhi-core supporting extensions
  • [CEP-985] - Stationery Alert is one of the Geo Dashboard features which enable users to recieve alerts if a spatial object stayes in a specified area for a given specified time.
  • [CEP-993] - Exchangeable views between form view and source view when creating event streams
  • [CEP-1017] - cApp support for CEP components
  • [CEP-1018] - Encrypting password fields of Input and Output Adapters
  • [CEP-1028] - File Based Stream Definition Store
  • [CEP-1029] - String Extension for Siddhi
  • [CEP-1030] - Math Extension for Siddhi
  • [CEP-1032] - Integrating Siddhi 3.0.0
  • [CEP-1033] - Adding annotation,partitioning and query grouping support in Storm
  • [CEP-1062] - Cron TimeWindow for Siddhi
  • [CEP-1095] - Domain Specific Execution Manager
  • [CEP-1132] - Improving HA support
  • [CEP-1141] - Geo Dashboard Integration
  • [CEP-1355] - Analytics Dashboard
  • [CEP-1356] - Siddhi Try It Feature
  • [CEP-1357] - JMX monitoring support for CEP
  • [CEP-1358] - Adding Metrics support for CEP

Improvements

  • [CEP-209] - Cleanup SQL & Hazelcast query creation logic
  • [CEP-216] - Optimize Siddhi partitions by chaining per queries together
  • [CEP-391] - Better to specify different email subjects rather than specifying with SOAPAction
  • [CEP-392] - Better if the passwords shown on xml on edit mode be hidden
  • [CEP-537] - Sample with MB (As jms) with CEP
  • [CEP-821] - the way CEP handles if the specified BAM user does not exist needs to improve
  • [CEP-858] - CEP Input/Output Adapter runtime queue,batch size, etc defaults has to go to a config file
  • [CEP-863] - Databases types needs to extensible for event tables like siddhi extension
  • [CEP-872] - Implementing different stream clustering logics to siddhi event processor
  • [CEP-884] - Improve jms input adaptor to pass advanced jms configs
  • [CEP-889] - Blooms Filter for siddhi event tables
  • [CEP-891] - Ability to create event stream based on event structure
  • [CEP-892] - On Fly validation to fields if possible
  • [CEP-965] - Make MySQL Output event adaptor generic for all RDBMS
  • [CEP-969] - issue in validating the parameter count passed
  • [CEP-1010] - Enabling event simulating via data in database
  • [CEP-1011] - Extended Regex Functionality Support for Siddhi
  • [CEP-1021] - Sort Execution Plans and Event Streams in alphabetical order
  • [CEP-1036] - Important Improvements for CEP 4.0.0 (Siddhi)
  • [CEP-1037] - Email Output Event Adapter
  • [CEP-1038] - HTTP Output Event Adapter
  • [CEP-1039] - SOAP Output Event Adapter
  • [CEP-1040] - JMS Output Event Adapter
  • [CEP-1045] - [Event tables] Event tables should support Oracle DBMS
  • [CEP-1046] - JMS Input Event Adapter
  • [CEP-1047] - MQTT Output Event Adapter
  • [CEP-1048] - MQTT Input Event Adapter
  • [CEP-1049] - Email Input Event Adapter
  • [CEP-1051] - Create features for Event Output Adapters
  • [CEP-1052] - Websocket & Websocket-Local Event Output Adapters
  • [CEP-1053] - http input event adapter feature
  • [CEP-1054] - Websocket & Websocket-Local Input Event Adapter
  • [CEP-1055] - SMS Output Event Adapter
  • [CEP-1059] - adding input event adapter features for event receiver
  • [CEP-1060] - Adding cassandra output adapter feature for event publisher
  • [CEP-1063] - Event Flow Improvement
  • [CEP-1065] - Aligning Event Flow with the receiver/publisher architecture
  • [CEP-1071] - Adding event definition pop-up for event receiver and publisher
  • [CEP-1072] - Improve execution plan editor to incorporate new features
  • [CEP-1079] - Adding auto-completion to Siddhi Query Editor
  • [CEP-1080] - Improvements to code mirror syntax highlighting functionality
  • [CEP-1084] - Fixes and improvements for Application Deployer
  • [CEP-1088] - Improve Event Receivers' WSO2 Event mapping to add Stream Name and Version
  • [CEP-1110] - Improve the SOAP Output Adapter to handle advanced config properties
  • [CEP-1139] - Adding samples and integration tests for event publishers and receivers
  • [CEP-1144] - Adding RegEx Support fot Siddhi
  • [CEP-1159] - Add description to the Adapters
  • [CEP-1195] - Connection pooling for JMS publisher
  • [CEP-1197] - Add a cleanup method to remove all artefacts after a test case
  • [CEP-1198] - Default image when there are no data on real time charts
  • [CEP-1200] - Before deleting prompt for "Are you sure you want to delete ?" popup
  • [CEP-1207] - [CEP 4.0.0] - Put a Clear Button to the Event Simulator
  • [CEP-1209] - wso2event producer throughput reduces when increasing number of instances
  • [CEP-1214] - Tenant Loading does not happen for some event receivers when it receives event
  • [CEP-1227] - Scalability of CEP+Storm needs improvement
  • [CEP-1240] - WSO2Event - Performance Tuning Recommendations documentation
  • [CEP-1243] - Update lmax.distruptor to latest version
  • [CEP-1245] - Update nexus and CEP for latest disruptor 3.3.2
  • [CEP-1250] - Adding timestamp selection option for realtime gadget
  • [CEP-1261] - Monitoring distributed deployment status
  • [CEP-1265] - Add secure vault / cipher tool support to delivary manager password in event-broker.xml
  • [CEP-1266] - Add secure vault / cipher tool support to mail.smtp.password in output-event-adapters.xml
  • [CEP-1267] - Adding manipulation links when viewing artefacts
  • [CEP-1273] - Add Analytics JMX Data Agent to CEP

WSO2 ESB: Habilitando log WIRE para visualizar mensajes HTTP

En la entrada anterior les explicaba como identificar la fuente de un error usando el TCPMON para ver los mensajes intercambiados. Aquellos que no deseen usar esta herramienta pueden activar los log WIRE en el WSO2 ESB y de esta forma ver por la consola los mensajes intercambiados.

Los pasos son los siguientes:
  1. Autenticarse en el WSO2 ESB e ir a la pestaña Configure.
  2. Buscar la opción Logging y darle clic.
  3. En la sección "Configure Log4J Loggers", escribir "wire"  en "Filter Loggers by" y dar clic en el botón Contains.
  4. En el logger "org.apache.synapse.transport.http.wire" marcar el LEVEL como DEBUG.

Eso es todo. Si volvemos a invocar al servicio sin los ajustes mecionados en la entrada anterior veremos lo siguiente.

[2015-09-18 11:26:14,820] DEBUG - wire >> "POST /services/JsonToXMLProxy HTTP/1.1[\r][\n]"
[2015-09-18 11:26:14,820] DEBUG - wire >> "Host: localhost:8281[\r][\n]"
[2015-09-18 11:26:14,821] DEBUG - wire >> "User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0[\r][\n]"
[2015-09-18 11:26:14,821] DEBUG - wire >> "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[\r][\n]"
[2015-09-18 11:26:14,821] DEBUG - wire >> "Accept-Language: null[\r][\n]"
[2015-09-18 11:26:14,822] DEBUG - wire >> "Accept-Encoding: gzip, deflate[\r][\n]"
[2015-09-18 11:26:14,822] DEBUG - wire >> "Content-Type: application/json; charset=UTF-8[\r][\n]"
[2015-09-18 11:26:14,822] DEBUG - wire >> "Content-Length: 19[\r][\n]"
[2015-09-18 11:26:14,822] DEBUG - wire >> "Cookie: region3_registry_menu=visible; menuPanel=visible; menuPanelType=config; requestedURI="../../carbon/log-admin/log-admin.jsp?region=r
egion1&item=logging_menu"; region1_configure_menu=none; region4_monitor_menu=none; region5_tools_menu=none; current-breadcrumb=configure_menu%2Clogging_menu%23[\r][\n]"
[2015-09-18 11:26:14,823] DEBUG - wire >> "Connection: keep-alive[\r][\n]"
[2015-09-18 11:26:14,823] DEBUG - wire >> "Pragma: no-cache[\r][\n]"
[2015-09-18 11:26:14,823] DEBUG - wire >> "Cache-Control: no-cache[\r][\n]"
[2015-09-18 11:26:14,823] DEBUG - wire >> "[\r][\n]"
[2015-09-18 11:26:14,823] DEBUG - wire >> "{"celsius": "200" }"
[2015-09-18 11:26:14,825]  INFO - LogMediator To: /services/JsonToXMLProxy, MessageID: urn:uuid:236d5499-44bf-42e3-bc24-036f7e4b693d, Direction: request, TEMPERATURA_ENTRADA = 200
[2015-09-18 11:26:14,831] DEBUG - wire << "POST /webservices/tempconvert.asmx HTTP/1.1[\r][\n]"
[2015-09-18 11:26:14,831] DEBUG - wire << "Accept-Language: null[\r][\n]"
[2015-09-18 11:26:14,832] DEBUG - wire << "Cookie: region3_registry_menu=visible; menuPanel=visible; menuPanelType=config; requestedURI="../../carbon/log-admin/log-admin.jsp?region=r
egion1&item=logging_menu"; region1_configure_menu=none; region4_monitor_menu=none; region5_tools_menu=none; current-breadcrumb=configure_menu%2Clogging_menu%23[\r][\n]"
[2015-09-18 11:26:14,832] DEBUG - wire << "Accept-Encoding: gzip, deflate[\r][\n]"
[2015-09-18 11:26:14,832] DEBUG - wire << "Content-Type: text/xml[\r][\n]"
[2015-09-18 11:26:14,833] DEBUG - wire << "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[\r][\n]"
[2015-09-18 11:26:14,833] DEBUG - wire << "Pragma: no-cache[\r][\n]"
[2015-09-18 11:26:14,833] DEBUG - wire << "Cache-Control: no-cache[\r][\n]"
[2015-09-18 11:26:14,833] DEBUG - wire << "SOAPAction: "http://www.w3schools.com/webservices/CelsiusToFahrenheit"[\r][\n]"
[2015-09-18 11:26:14,833] DEBUG - wire << "Transfer-Encoding: chunked[\r][\n]"
[2015-09-18 11:26:14,834] DEBUG - wire << "Host: localhost:5555[\r][\n]"
[2015-09-18 11:26:14,834] DEBUG - wire << "Connection: Keep-Alive[\r][\n]"
[2015-09-18 11:26:14,834] DEBUG - wire << "User-Agent: Synapse-PT-HttpComponents-NIO[\r][\n]"
[2015-09-18 11:26:14,834] DEBUG - wire << "[\r][\n]"
[2015-09-18 11:26:14,835] DEBUG - wire << "125[\r][\n]"
[2015-09-18 11:26:14,835] DEBUG - wire << "<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><web:Celsiu
sToFahrenheit xmlns:web="http://www.w3schools.com/webservices/"><web:Celsius>200</web:Celsius></web:CelsiusToFahrenheit></soapenv:Body></soapenv:Envelope>[\r][\n]"
[2015-09-18 11:26:14,835] DEBUG - wire << "0[\r][\n]"
[2015-09-18 11:26:14,836] DEBUG - wire << "[\r][\n]"
[2015-09-18 11:26:15,423] DEBUG - wire >> "HTTP/1.1 411 Length Required[\r][\n]"
[2015-09-18 11:26:15,424] DEBUG - wire >> "Via: 1.1 FWSOAINT[\r][\n]"
[2015-09-18 11:26:15,424] DEBUG - wire >> "Connection: Keep-Alive[\r][\n]"
[2015-09-18 11:26:15,424] DEBUG - wire >> "Proxy-Connection: Keep-Alive[\r][\n]"
[2015-09-18 11:26:15,425] DEBUG - wire >> "Content-Length: 357[\r][\n]"
[2015-09-18 11:26:15,425] DEBUG - wire >> "Date: Fri, 18 Sep 2015 15:26:15 GMT[\r][\n]"
[2015-09-18 11:26:15,425] DEBUG - wire >> "Content-Type: text/html[\r][\n]"
[2015-09-18 11:26:15,426] DEBUG - wire >> "Server: ECSF (mia/1770)[\r][\n]"
[2015-09-18 11:26:15,426] DEBUG - wire >> "[\r][\n]"
[2015-09-18 11:26:15,426] DEBUG - wire >> "<?xml version="1.0" encoding="iso-8859-1"?>[\n]"
[2015-09-18 11:26:15,426] DEBUG - wire >> "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"[\n]"
[2015-09-18 11:26:15,427] DEBUG - wire >> "         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">[\n]"
[2015-09-18 11:26:15,427] DEBUG - wire >> "<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">[\n]"
[2015-09-18 11:26:15,428] DEBUG - wire >> "[0x9]<head>[\n]"
[2015-09-18 11:26:15,428] DEBUG - wire >> "[0x9][0x9]<title>411 - Length Required</title>[\n]"
[2015-09-18 11:26:15,428] DEBUG - wire >> "[0x9]</head>[\n]"
[2015-09-18 11:26:15,428] DEBUG - wire >> "[0x9]<body>[\n]"
[2015-09-18 11:26:15,428] DEBUG - wire >> "[0x9][0x9]<h1>411 - Length Required</h1>[\n]"
[2015-09-18 11:26:15,429] DEBUG - wire >> "[0x9]</body>[\n]"
[2015-09-18 11:26:15,429] DEBUG - wire >> "</html>[\n]"
[2015-09-18 11:26:15,431] ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:149)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:133)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:98)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:297)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:529)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:172)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:247)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:722)
Caused by: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed
        at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:36)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)



Como se aprecia se muestra el mensaje que genera el backend por lo que es facilmente detectable la fuente del error.

lunes, 21 de septiembre de 2015

WSO2 ESB: Resolviendo un error del tipo DOCTYPE is not allowed


Volviendo a probar el ejemplo de esta entrada posteada hace ya un tiempo en el blog me topo con el siguiente error en la consola del ESB versión 4.9.0:

[2015-09-18 10:52:14,424]  INFO - LogMediator To: /services/JsonToXMLProxy, MessageID: urn:uuid:c1847f1d-b755-486d-bf5b-13d2b3ac2494, Direction: request, TEMPERATURA_ENTRADA = 200
[2015-09-18 10:52:14,793] ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:149)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:133)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:98)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:297)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:529)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:172)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:247)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:722)
Caused by: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed
        at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:36)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
        ... 18 more
[2015-09-18 10:52:14,796] ERROR - SequenceMediator Error while building message
org.apache.axis2.AxisFault: Error while building Passthrough stream
        at org.apache.synapse.transport.passthru.util.RelayUtils.handleException(RelayUtils.java:283)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:142)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:98)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:297)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:529)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:172)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:247)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:149)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:133)
        ... 13 more
Caused by: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed
        at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:36)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
        ... 18 more
[2015-09-18 10:52:14,805]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:fc858888-2316-4c5f-b210-b0d59c711ed5,
Direction: response, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = Error while building message, Envelope: <?xml version='1.0' encoding='utf-8'?><soap
env:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope>


Ummm, que extraño, esto no pasaba antes. :-D
Veamos que puede ser!!!!

Así mirando el log no dice mucho, por lo que rapidamente levanté el TCPMON e hice un ajuste en mi endpoint, dejandolo así:
NOTA: En otra entrada mostraré como habilitar WIRE en el ESB para no tener que usar el TCPMON.

<address uri="http://localhost:5555/webservices/tempconvert.asmx" format="soap11"/>


De esta manera puedo ver que es lo que va pasando por HTTP. El error aparece al momento:

HTTP/1.1 411 Length Required
Via: 1.1 FWSOAINT
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 357
Date: Fri, 18 Sep 2015 14:55:19 GMT
Content-Type: text/html
Server: ECSF (mia/176E)


         <?xml version="1.0" encoding="iso-8859-1"?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
               <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
                  <head>  
                     <title>411 - Length Required</title> 
                  </head> 
                  <body>  
                     <h1>411 - Length Required</h1> 
                  </body>
               </html>


El problema ocurre porque no se soporta la versión 1.1 de HTTP así que tenemos 2 variantes, obligamos al ESB a interactuar usando HTTP 1.0 o desabilitamos los chunkings.

La solución es la siguiente:

Si queremos forzar al ESB a usar HTTP 1.0 debemos agregar la siguiente propiedad en la sencuencia de entrada.

<property name="FORCE_HTTP_1.0" value="true" scope="axis2"/>


Si queremos desabilitar los chunkings debemos agregar la siguiente propiedad en la secuencia de entrada.

<property name="DISABLE_CHUNKING" value="true" scope="axis2"/>


Y eso es todo.Ya el servicio vuelve a funcionar de nuevo.

jueves, 17 de septiembre de 2015

WSO2 AS: Liberada versión 5.3.0

http://wso2.com/products/application-server/


Seguimos en la marea de nuevas versiones de las herramientas de WSO2.
Recientemente ha sido liberada una nueva versión del WSO2 AS.

Las principales características se pueden ver a continuación.

New Features

  • JavaEE 6 Web Profile support via TomEE 1.7.2 integration
  • WebSocket 1.1 API Support as defined by the JSR-356 specification
  • Tomcat Virtual Hosts support
  • SAML2 Single-Sign-On support for web applications
  • WS-Discovery support for CXF JAX-WS and JAX-RS services
  • OSGi ServiceLoader Mediator specification support via SPI-Fly

Key Features

  • Support for Servlet 3, JSP 2.2, EL 2.2, JSTL 1.2 specifications.
  • Full JAX-WS 2.2 and JAX-RS 2.0 Specification support
  • Integration of Jaggery - server side scripting framework
  • Unified Application listing and management UI for WebApps, JAX-WS/RS, Jaggery
  • Multi Tenant support for standalone deployment
  • 100% Apache Tomcat compliance runtime
  • Lazy loading for web applications and services
  • AppServer tooling - AppServer related artifacts can be easily generated using WSO2 Developer Studio
  • Clustering support for High Availability and High Scalability
  • Full support for WS-Security, WS-Trust, WS-Policy and WS-SecureConversation
  • JMX and Web interface based monitoring and management
  • WS-* and REST support
  • GUI, command line, and IDE based tools for Web service development
  • Equinox P2 based provisioning support
  • WSDL2Java/Java2WSDL/WSDL 1.1 and try it (invoke any remote Web service)

XML & WS-* Standards Support

  • SOAP 1.1/1.2
  • WSDL 1.1
  • WSDL 2.0
  • MTOM, XOP & SOAP with Attachments
  • WS-Addressing
  • WS-Security 1.0/1.1
  • WS-Trust
  • WS-SecureConversation
  • WS-SecurityPolicy
  • WS-Policy
  • WS-PolicyAttachment
  • WS-MetadataExchange

JavaEE Web application Standards Support

  • Java API for RESTful Web Services (JAX-RS) 1.1
  • Java API for XML-Based Web Services (JAX-WS) 2.2
  • Java Servlet 3.0
  • JavaServer Pages (JSP) 2.2
  • Expression Language (EL) 2.2
  • Standard Tag Library for JavaServer Pages (JSTL) 1.2
  • Java Server Faces (JSF) 2.0
  • Java Persistence API (JPA) 2.0
  • Java Transaction API (JTA) 1.1
  • Contexts and Dependency Injection for Java (CDI) 1.0
  • Enterprise JavaBeans (EJB) Lite 3.1
  • Bean Validation 1.0
  • Java Architecture for XML Binding (JAXB) 2.2
  • Common Annotations for the Java Platform (JSR-250) 1.1

Open Source components included in WSO2 Application Server

  • Embedded Apache Tomcat
  • Apache TomEE
  • Apache CXF: Supporting JAX-WS and JAX-RS
  • Apache Axis2 (SOAP)
  • Hazelcast
  • Apache Axiom (High performance XML Object Model)
  • Apache Rampart/Apache WSS4J (WS-Security)
  • Apache Rahas (WS-SecureConversation)
  • WS-Addressing implementation in Axis2
  • Apache Neethi (WS-Policy)
  • WS-SecurityPolicy implementation in Axis2
  • Apache XML Schema
  • Apache Tribes (Group Communications Framework)


lunes, 14 de septiembre de 2015

WSO2 ESB: Almacén de conectores a la carta.


Store Connectors

WSO2 acaba de anunciar la liberación de una nueva solución enfocada en los conectores que ha implementado para integrar soluciones de terceros a través del WSO2 ESB.

Ya lo había leído en la documentación del WSO2 ESB v4.9.0 y aquí tenemos la URL de acceso.
Pueden encontrar más información aquí.

Les dejo el listado de los conectores disponibles en la actualidad, a mi cuenta 113 y subiendo.

Billing and Accounting
  1. Billiving
  2. Recurly
  3. FreeAgent
  4. Xero
  5. Stripe
  6. Chargebee
  7. FreshBooks
  8. Paypal
  9. Billomat
  10. Braintree
  11. Ronin
  12. QuickBooks

Communication
  1.  Mandrill
  2. Nexmo
  3. Gmail
  4. CallRail
  5. Amazon SES
  6. Twilio
  7. LiveChat
Customer Relationship Management
  1. Base CRM
  2. Zoho CRM
  3. Nimble
  4. Sirportly
  5. Pipedrive
  6. Salesforce
  7. PipelineDeals
  8. FreshDesk
  9. Capsule CRM
  10. Zendesk
  11. Insightly
  12. Clevertim CRM
  13. SupportBee
  14. Sugar CRM
Developer Tools
  1. LDAP
  2. BitBucket
  3. Github
  4. File
  5. Amazon Simple Queue
  6. Loggly
  7. Amazon Simple DB
  8. Amazon S3
  9. Google Prediction
E-commerce
  1. Shopify
  2. Magento
  3. eBay
  4. Netsuite
  5. TradeGecko
Education
  1. Canvas
Human Resource Management
  1. Zoho People
  2. PeopleHR
  3. Zoho Recruit
  4. Deputy
IOT
  1. Nest
Issue Tracking and Project Management
  1. Podio
  2. PagerDuty
  3. Teamwork
  4. Bugherd
  5. Activecollab
  6. Basecamp
  7. Redmine
  8. PivotalTracker
  9. Prodpad
  10. Cashboard
  11. Agilezen
  12. ProWorkflow
  13. Jira
Productivity Tools
  1. Delicious
  2. EverNote
  3. Confluence
  4. GoToWebinar
  5. Google Custom Search
  6. SimpleNote
  7. Tsheets
  8. GoToTraining
  9. Google Calendar
  10. Formstack
  11. Google Spreadsheet
  12. Jotform
  13. Wunderlist
  14. Apple Push Notification
  15. Google Tasks
Sales and Marketing
  1. Eloqua Standard
  2. Eloqua
  3. Marketo
  4. ExactTarget
  5. ConstantContact
  6. ActiveCampaign
  7. SurveyGizmo
  8. Campaign Monitor
  9. VerticalResponse
  10. MailChimp
Social Media
  1. Wordpress
  2. Instagram
  3. GooglePlus
  4. Foursquare
  5. Spotify
  6. Yelp
  7. Yammer
  8. Twitter
  9. LinkedIn
  10. Flickr
Storage and Content Management
  1. Slideshare
  2. Dropbox
  3. Box
  4. Google Blogger
  5. Disqus
Other
  1. OpenWeatherMap
  2. Planyo
  3. Concur
  4. Eventbrite
  5. Survey Monkey
  6. Shippo
  7. Clio

WSO2 Enterprise Store: Liberada versión 2.0.0

WSO2 ES

Hace poco fue liberada la versión 2.0.0 del WSO2 Enterprise Store.

Como mejoras tenemos:

  • [STORE-615] - Change REST API Documentation
  • [STORE-680] - Center the lifecycle view in the publisher
  • [STORE-737] - Error Messages should be ideally in Red Color or any highlighting color other than Black
  • [STORE-739] - Isn't it better to have title for Login screen as "Log into your Account" rather than " Create An Account"?
  • [STORE-775] - Warnings thrown when accessing Store
  • [STORE-826] - Better to have Red or a different color for Dislike flag rather than green
  • [STORE-1006] - For the basic search it's better to mention in placeholder which fields can be search
  • [STORE-1022] - Refactor Lifecycle attaching functionality based on LC element in RXT and defaultLifecycleEnabled property in asset.js extension.
  • [STORE-1023] - Assign the value for asset provider from the name of the user making asset create request

Los bug solucionados incluyen:

  • [STORE-550] - HTML tag, attribute "id" is not binding
  • [STORE-632] - [Publisher] Lifecycle state should be prominently displayed in the list view
  • [STORE-659] - Warning printed when access dependencies of registry extensions.
  • [STORE-731] - Store Front - Null appended to landing page URL
  • [STORE-765] - Dbscripts (POSTGRESQL,MSSQL,DB2) for social DB is missing in Latest ES pack
  • [STORE-792] - Tenant Users can't create assets Eg:-soap service
  • [STORE-793] - Searching by name field in store asset listing page is broken
  • [STORE-812] - 401 Error thrown when Internal/Reviewer try to access Copy page
  • [STORE-857] - Creating a new version of an asset - UI
  • [STORE-861] - 'null' in URL in top-assets page
  • [STORE-868] - Unable to remove a bookmark - UI
  • [STORE-883] - Error 500 when Bookmarked is clicked
  • [STORE-944] - Error in adding reviews when connected with Oracle
  • [STORE-992] - Advance search does not work when there are search results more than 100
  • [STORE-1001] - [Publisher] when artifacts are loaded with infinite scrolling at the end of resource set error is logged in back end.
  • [STORE-1002] - Internal/Reviewer can see the Edit of Assets in In Review state, but when clicked 401 error page displayed
  • [STORE-1003] - [Internet Explorer] - Nothing happens when Bookmark button is clicked from Store asset list view
  • [STORE-1007] - Assets filtered by store search will remain the same even after logged in to store or even after logged out from store
  • [STORE-1009] - [Copy Asset] When we create a new version of an already created asset, Tag Details are not copied
  • [STORE-1010] - basic auth logout doesn't work
  • [STORE-1015] - Tenants cannot see newly created asset types
  • [STORE-1017] - Disabled Delete page is accessible when opened in a new tab
  • [STORE-1019] - Users cannot be registered with email as Username from Store when Email as Username is enabled in Carbon.xml
  • [STORE-1028] - Carbon users can Bookmark, Rate, Access My Items page of Tenant Domain assets
  • [STORE-1030] - Existing assets can be updated with any version (even duplicates)
  • [STORE-1031] - Only 10 assets can be bookmarked from the same asset type.
  • [STORE-1034] - Life cycle status showing incorrectly when the end life cycle state doesn't have a transition
  • [STORE-1037] - [MSSQL] Max of 10 User Reviews displayed. Should have pagination to see Reviews More than 10
  • [STORE-1038] - [Lifecycle tab]"Failed to obtain state information" message occurs when promoted to the end lc state in which no more transitions defined
  • [STORE-1040] - Published assets are not displaying in store.
  • [STORE-1044] - [ES]Cannot add assets due to a validation code added before setting attributes to API asset
  • [STORE-1046] - Tenants cannot add reviews
  • [STORE-1047] - Recently created assets must be shown in top of the page in publisher
  • [STORE-1050] - A login screen displayed when trying to add Reviews when user already logged in
  • [STORE-1060] - No default thumbnail set for assets without images
  • [STORE-1075] - Tenant user with reviewer role not authorized to review assets
  • [STORE-1076] - Broken image Icon can be seen when created asset without Thumbnail in publisher
  • [STORE-1079] - Advanced Search - Search button is not functioning when one search is performed that doesn't give any result
  • [STORE-1092] - [Intermittent] - Newly created Assets cannot be reviewed, Exception thrown
  • [STORE-1094] - Publisher/Store - When an asset without images is edited, the default thumbnail is not displayed with the asset. The broken Image is displayed.