Is this correct way of adding contexts in jetty 9 and 10? - servlets

I am using embedded jetty and loading contexts through xml file.
In my application, following contexts were deployed in my jetty 6.1.7 version:
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.mortbay.jetty.servlet.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.TransformationServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/monitor</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.mortbay.jetty.servlet.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.MonitorServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/blazon</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.mortbay.jetty.servlet.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.BlazonJobServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/getCapabilities</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.mortbay.jetty.servlet.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CapabilityServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/output</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/../cache/</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.FileProxyServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/resource</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/../resource/</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.FileProxyServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/canExecute</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.mortbay.jetty.servlet.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CanExecuteServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/getOccupancy</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.mortbay.jetty.servlet.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.GetOccupancyServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.mortbay.jetty.servlet.Context">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/delete</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.home" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.mortbay.jetty.servlet.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CleanupJobServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
We are moving to jetty 9 and and tried deploying contexts something like this:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection">
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.TransformationServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/monitor</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.MonitorServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/blazon</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.BlazonJobServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/getCapabilities</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CapabilityServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/output</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/../cache/</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.FileProxyServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/resource</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/../resource/</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.FileProxyServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/canExecute</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CanExecuteServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/getOccupancy</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.GetOccupancyServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Arg>
<Ref id="Contexts"/>
</Arg>
<Arg>/cts/delete</Arg>
<Set name="resourceBase">
<SystemProperty name="jetty.base" default="."/>/</Set>
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler"/>
</Set>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CleanupJobServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
</Configure>
basically I have used latest APIs of jetty thats it, I am not sure if this is the correct way of deploying contexts or not.
Any inputs provided will be really helpful.

All of these details were covered in my prior answer to you at How to enable embedded jetty 9 in SSL mode through xml configuration? (including a link to an example project that does exactly what you asked there and here)
Don't use the ServletContextHandler constructor technique (aka <Arg> elements) when doing things with contexts and XML (those techniques are reserved for implementations of AppProvider from the DeploymentManager, which you are obviously not using).
Your Jetty 9 XML is setup to configure the id of Contexts (which is of class org.eclipse.jetty.server.handler.ContextHandlerCollection).
Then it creates a bunch of ServletContextHandler objects (the <New> elements), and doesn't add them to anywhere. Again, don't use the Constructor techniques.
What you have are orphaned contexts that don't belong anywhere, and Jetty is unaware of them.
You have a few things to fix.
Remove your <Arg> element inside the first level of <New class="org.eclipse.jetty.servlet.ServletContextHandler">, all of them.
Add appropriate <Set name="contextPath">/cts</Set> for each ServletContextHandler (be sure not to overlap or cause conflicts across your chosen contexts, like you currently have)
Use the Servlet url-pattern appropriately. If you use the url-pattern of / that's the "default" pattern, and that means your resourceBase is super important and your have to satisfy the rules of the "Default Servlet" in your servlet implementations.
Use a single ServletContextHandler to avoid having separate HttpSession objects / trees / storage for each and every context (this is enforced by Jetty and the Servlet Spec and cannot be overridden). For example: your /cts/delete context cannot set / see / use the HttpSession from /cts and vice-versa.
Finally add the resulting ServletContextHandler to the ContextHandlerCollection.
Taking all of the advice together, smashing this into a single ServletContextHandler (to avoid issues with ResourceBase and HttpSession) you have the following result:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection">
<Call name="addHandler">
<Arg>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Set name="contextPath">/cts</Set>
<!-- it would be smarter to have a `base` dir with `/resource` and `/output` sub directories, to avoid having to redeclare the locations in your specific servlets) -->
<Set name="resourceBase"><SystemProperty name="jetty.base" default="."/>/</Set>
<!-- This is incomplete, like you have it, so I left it incomplete.
Your HTTP Sessions will likely not behave like you expect
if you leave it like this -->
<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler"/>
</Set>
<!-- Use url-pattern properly, not separate Contexts! -->
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.TransformationServlet</Arg>
<Arg>/</Arg>
</Call>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.MonitorServlet</Arg>
<Arg>/monitor</Arg>
</Call>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.BlazonJobServlet</Arg>
<Arg>/blazon</Arg>
</Call>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CapabilityServlet</Arg>
<Arg>/getCapabilities</Arg>
</Call>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CanExecuteServlet</Arg>
<Arg>/canExecute</Arg>
</Call>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.GetOccupancyServlet</Arg>
<Arg>/getOccupancy</Arg>
</Call>
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.CleanupJobServlet</Arg>
<Arg>/delete</Arg>
</Call>
<!-- The location of the content needs to be passed in as it doesn't fit within the base resource cleanly.
Easily fixed by having a sane directory structure for your resource base you pass into the servlet context handler instead. -->
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.FileProxyServlet</Arg>
<Arg>/output</Arg>
<Call name="setInitParameter">
<Arg>fileContentBase</Arg>
<Arg><SystemProperty name="jetty.base" default="."/>/../cache/</Arg>
</Call>
</Call>
<!-- The location of the content needs to be passed in as it doesn't fit within the base resource cleanly.
Easily fixed by having a sane directory structure for your resource base you pass into the servlet context handler instead. -->
<Call name="addServlet">
<Arg>com.docu.cts.webservices.remote.FileProxyServlet</Arg>
<Arg>/resource</Arg>
<Call name="setInitParameter">
<Arg>fileContentBase</Arg>
<Arg><SystemProperty name="jetty.base" default="."/>/../resource/</Arg>
</Call>
</Call>
</New>
</Arg>
</Call>
</Configure>

Related

How to insert an image into Actiona

I am new to the testing (and programming in general). At work i was told, i have to do some automatic tests on Actiona.
Problem is, i do not find much online, except Wiki, but that aint too helpful.
Anyway, i have problem with inserting image - ergo it doesnt find it. I do not know if its the problem with computer, but probably its in my logic. So i need help....
(My goal: we are working on a program, which includes lot of options (sorta tabs). So since some options can be removed, i have to make a script, which would make test no matter their options. Hope i wrote it understandably.)
My script involves 2 images.
One is the one, when image is clicked on and another is non clicked. So program would have to find them itself.
How do i even know it found images?
How do i make it work?
Example of what i did till now...
Line 001: Find image (i set to where it is)
Line 002: Click
Line 003: Console (i set it to: succesful)
Line 004: Stop
Line 005: Console (i set it to unsuccesful)
Line 006: Find image (i set second image/Second possibility)
Line 007: Cursor path
Line 008: Click (to go back on beginning, on tab)
And script copied from notepad:
<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
<settings program="actiona" version="3.9.2" scriptVersion="1.1.0" os="GNU/Linux"/>
<actions>
<action name="ActionFindImage" version="1.1.0"/>
<action name="ActionStop" version="1.0.0"/>
<action name="ActionClick" version="1.0.0"/>
<action name="ActionConsole" version="1.0.0"/>
<action name="ActionCursorPath" version="1.0.0"/>
</actions>
<parameters/>
<resources/>
<script pauseBefore="200" pauseAfter="200">
<action name="ActionFindImage">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="32" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="maximumMatches">
<subParameter name="value" code="0">1</subParameter>
</parameter>
<parameter name="source">
<subParameter name="value" code="0">screenshot</subParameter>
</parameter>
<parameter name="ifFound">
<subParameter name="action" code="0">do_nothing</subParameter>
<subParameter name="line" code="0">006</subParameter>
</parameter>
<parameter name="confidence">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="position">
<subParameter name="value" code="0">pos_zaposleni</subParameter>
</parameter>
<parameter name="method">
<subParameter name="value" code="0">correlationcoefficient</subParameter>
</parameter>
<parameter name="confidenceMinimum">
<subParameter name="value" code="0">95</subParameter>
</parameter>
<parameter name="imageToFind">
<subParameter name="value" code="0">/home/mojca/Namizje/actionaSkripte/izbiraModula/Zaposleni/zaposleniOznačena.png</subParameter>
</parameter>
<parameter name="ifNotFound">
<subParameter name="action" code="0">goto</subParameter>
<subParameter name="line" code="0">005</subParameter>
</parameter>
<parameter name="imageToSearchIn">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="searchExpansion">
<subParameter name="value" code="0">15</subParameter>
</parameter>
<parameter name="windowRelativePosition">
<subParameter name="value" code="0">false</subParameter>
</parameter>
<parameter name="windowName">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="downPyramidCount">
<subParameter name="value" code="0">1</subParameter>
</parameter>
<parameter name="searchDelay">
<subParameter name="value" code="0">100</subParameter>
</parameter>
</action>
<action name="ActionClick" comment="poišče sliko zaposleni na desni strani modulov in klikne nanjo" enabled="false">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="33" action="0" line=""/>
<exception id="32" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="action">
<subParameter name="value" code="0">pressRelease</subParameter>
</parameter>
<parameter name="position">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="1">232:57</subParameter>
</parameter>
<parameter name="positionOffset">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="button">
<subParameter name="value" code="0">left</subParameter>
</parameter>
<parameter name="amount">
<subParameter name="value" code="0">1</subParameter>
</parameter>
</action>
<action name="ActionClick">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="33" action="0" line=""/>
<exception id="32" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="action">
<subParameter name="value" code="0">pressRelease</subParameter>
</parameter>
<parameter name="position">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0">201:49</subParameter>
</parameter>
<parameter name="positionOffset">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="button">
<subParameter name="value" code="0">left</subParameter>
</parameter>
<parameter name="amount">
<subParameter name="value" code="0">1</subParameter>
</parameter>
</action>
<action name="ActionConsole">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="output">
<subParameter name="value" code="0">information</subParameter>
</parameter>
<parameter name="text">
<subParameter name="value" code="0">Neuspešno</subParameter>
</parameter>
</action>
<action name="ActionStop">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="2" action="1" line=""/>
</action>
<action name="ActionConsole">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="output">
<subParameter name="value" code="0">information</subParameter>
</parameter>
<parameter name="text">
<subParameter name="value" code="0">Uspešno</subParameter>
</parameter>
</action>
<action name="ActionFindImage">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="32" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="maximumMatches">
<subParameter name="value" code="0">1</subParameter>
</parameter>
<parameter name="source">
<subParameter name="value" code="0">screenshot</subParameter>
</parameter>
<parameter name="ifFound">
<subParameter name="action" code="0">goto</subParameter>
<subParameter name="line" code="0">009</subParameter>
</parameter>
<parameter name="confidence">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="position">
<subParameter name="value" code="0">pos_zaposleni</subParameter>
</parameter>
<parameter name="method">
<subParameter name="value" code="0">correlationcoefficient</subParameter>
</parameter>
<parameter name="confidenceMinimum">
<subParameter name="value" code="0">95</subParameter>
</parameter>
<parameter name="imageToFind">
<subParameter name="value" code="0">/home/mojca/Namizje/actionaSkripte/izbiraModula/Zaposleni/zaposleniOznačena.png</subParameter>
</parameter>
<parameter name="ifNotFound">
<subParameter name="action" code="0">do_nothing</subParameter>
<subParameter name="line" code="0"></subParameter>
</parameter>
<parameter name="imageToSearchIn">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="searchExpansion">
<subParameter name="value" code="0">15</subParameter>
</parameter>
<parameter name="windowRelativePosition">
<subParameter name="value" code="0">false</subParameter>
</parameter>
<parameter name="windowName">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="downPyramidCount">
<subParameter name="value" code="0">1</subParameter>
</parameter>
<parameter name="searchDelay">
<subParameter name="value" code="0">100</subParameter>
</parameter>
</action>
<action name="ActionCursorPath">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="path">
<subParameter name="value" code="0">339:479;340:505;317:436;336:464;</subParameter>
</parameter>
<parameter name="positionOffset">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="button">
<subParameter name="value" code="0">none</subParameter>
</parameter>
</action>
<action name="ActionClick" comment="klik na zaposlene">
<exception id="1" action="0" line=""/>
<exception id="0" action="0" line=""/>
<exception id="33" action="0" line=""/>
<exception id="32" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="action">
<subParameter name="value" code="0">pressRelease</subParameter>
</parameter>
<parameter name="position">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0">228:57</subParameter>
</parameter>
<parameter name="positionOffset">
<subParameter name="unit" code="0">0</subParameter>
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="button">
<subParameter name="value" code="0">left</subParameter>
</parameter>
<parameter name="amount">
<subParameter name="value" code="0">1</subParameter>
</parameter>
</action>
</script>
</scriptfile>
If i could get some example or how to make sure this is okay , it will be appriciated.

how to add mediation for get token of WSO2 API Manager?

I Have This API And I Used the Message Mediation Below to Authenticate and Get the Token:
curl -X POST "URL" -H "accept: /" -H "Content-Type: application/x-www-form-urlencoded" -d "username=user&password=password"
result is:
enter image description here
<payloadFactory media-type="x-www-form-urlencoded">
<format>
{
"username":"user",
"password":"password"
}
</format>
<args>
</args>
</payloadFactory>
<header name="Content-Type" value="application/x-www-form-urlencoded" scope="transport" />
<property name="messageType" value="application/json" scope="axis2" type="STRING" />
<property name="REST_URL_POSTFIX" value="" scope="axis2" type="STRING" />
<call blocking="true">
<endpoint>
<http method="POST" uri-template="URL" />
</endpoint>
</call>
<property name="bearer-token" expression="json-eval($..token)" scope="default" type="STRING" />
<property name="REST_URL_POSTFIX" expression="get-property('resource')" scope="axis2" type="STRING" />
<header name="Authorization" expression="fn:concat('Bearer ', get-property('bearer-token'))" scope="transport" />
<payloadFactory media-type="x-www-form-urlencoded">
<format>$1</format>
<args>
<arg evaluator="xml" expression="get-property('request-body')" />
</args>
</payloadFactory>
But i have this error:
enter image description here
WSO2 API Manager Logs
INFO - LogMediator STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = url, HEALTH CHECK URL = url
[2021-07-28 16:22:39,696] INFO - LogMediator STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = url, HEALTH CHECK URL = url
Make sure that, you have provided the correct token endpoint url for the Call mediator
<call blocking="true">
<endpoint>
<http method="POST" uri-template="https://your-token-endpoint/oauth" />
</endpoint>
</call>

Can't access WSO2 ESB proxy service thru its http endpoint URL

We have this WSO2 ESB proxy service that's accessible thru its https endpoint. I want to configure this service so that it will also be accessible via http.
I checked the service configuration in the carbon management console and confirmed that both https and http endpoint were already enabled:
https://10.20.0.20:8245/services/<service_name>
http://10.20.0.20:8282/services/<service_name>
Also, the axis2.xml file in ESB_HOME}/repository/conf/axis2/ seems to be configured just fine.
<!-- ================================================= -->
<!-- Transport Ins (Listeners) -->
<!-- ================================================= -->
<!-- the non blocking http transport based on HttpCore + NIO extensions -->
<transportReceiver name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOListener">
<parameter name="port" locked="false">8280</parameter>
<parameter name="non-blocking" locked="false">true</parameter>
<!--parameter name="bind-address" locked="false">hostname or IP address</parameter-->
<!--parameter name="WSDLEPRPrefix" locked="false">https://apachehost:port/somepath</parameter-->
<parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.NHttpGetProcessor</parameter>
<!--<parameter name="priorityConfigFile" locked="false">location of priority configuration file</parameter>-->
<parameter name="disableRestServiceDispatching" locked="false">true</parameter>
</transportReceiver>
<!-- the non blocking https transport based on HttpCore + SSL-NIO extensions -->
<transportReceiver name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLListener">
<parameter name="port" locked="false">8243</parameter>
<parameter name="non-blocking" locked="false">true</parameter>
<!--parameter name="bind-address" locked="false">hostname or IP address</parameter-->
<!--parameter name="WSDLEPRPrefix" locked="false">https://apachehost:port/somepath</parameter-->
<!--<parameter name="priorityConfigFile" locked="false">location of priority configuration file</parameter>-->
<parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.NHttpGetProcessor</parameter>
<parameter name="disableRestServiceDispatching" locked="false">true</parameter>
<parameter name="keystore" locked="false">
<KeyStore>
<Location>repository/resources/security/iaascol.jks</Location>
<Type>JKS</Type>
<Password>***</Password>
<KeyPassword>rotcelloc</KeyPassword>
</KeyStore>
</parameter>
<parameter name="truststore" locked="false">
<TrustStore>
<Location>repository/resources/security/client-truststore.jks</Location>
<Type>JKS</Type>
<Password>***</Password>
</TrustStore>
</parameter>
<!--<parameter name="SSLVerifyClient">require</parameter>
supports optional|require or defaults to none -->
</transportReceiver>
Port offset in ESB_HOME}/repository/conf/carbon.xml is set to 2.
<Offset>2</Offset>
I can't seem to access this proxy service thru its http endpoint URL. The version of WSO2 ESB is 4.5.0. Please let me know which configuration do I have to check / set. Thanks in advance.
Edit: Below is the proxy service config as well as netstat result.
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="disbursement" statistics="disable"
trace="enable" transports="https,http">
<target>
<inSequence>
<property action="set" name="EXECUTION_CONTEXT"
scope="default" type="STRING" value="disbursement"/>
<property action="set"
expression="fn:concat(//*[local-name()='Header']/*[local-name()='TrackingID'], '.xml')"
name="DumpFileName" scope="default" type="STRING"/>
<log category="INFO" level="full" separator=",">
<property name="EVENT_TYPE" value="PROCESSING_STARTED"/>
<property expression="get-property('DumpFileName')" name="FILENAME"/>
</log>
<property action="set" name="DumpFilePath" scope="default"
type="STRING" value="/home/user1/data/disbursement/incoming"/>
<class name="se.seman.wso2.mediator.WriteFile"/>
<property action="set" name="TopicName" scope="default"
type="STRING" value="VirtualTopic.seman.iaas.user1.topic.disbursement.out"/>
<property action="set" name="ResultCode" scope="default"
type="STRING" value="0"/>
<!--
TODO correct problem with xpath
validate source="/default/xpath">
<on-fail>
<property action="set" name="ResultCode"
scope="default" type="STRING" value="100"/>
<property action="set"
expression="get-property('ERROR_MESSAGE')"
name="ResultMessage" scope="default"
type="STRING"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Namespaces.user1.se:Cmf:InfoModel:FinancialManagement:Payment:Disbursment:0002"/>
<log category="INFO" level="full" separator=",">
<property name="MESSAGE" value="Schema validation failed"/>
<property
expression="get-property('ERROR_CODE')"
name="ERROR_CODE"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Namespaces.user1.se:Cmf:InfoModel:FinancialManagement:Payment:Disbursment:0002"/>
<property
expression="get-property('ERROR_MESSAGE')"
name="ERROR_MESSAGE"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Namespaces.user1.se:Cmf:InfoModel:FinancialManagement:Payment:Disbursment:0002"/>
</log>
<property action="set" name="RESPONSE"
scope="default" type="STRING" value="true"/>
</on-fail>
<schema key="conf:user1/ESBConfig/Common/NetPosti/resources/Disbursement_0002.xsd"/>
</validate -->
<log category="INFO" level="headers" separator=",">
<property name="MESSAGE" value="Before Topic"/>
<property expression="get-property('ERROR')" name="ERROR"/>
</log>
<filter xpath="get-property('ResultCode') = '0'">
<then>
<property action="set" name="ResultMessage"
scope="default" type="STRING" value="OK"/>
<class name="se.seman.wso2.mediator.WriteActiveMQTopic"/>
</then>
<else/>
</filter>
<header action="remove" name="To"/>
<property action="remove" name="NO_ENTITY_BODY" scope="axis2"/>
<property action="set" name="RESPONSE" scope="default"
type="STRING" value="true"/>
<payloadFactory>
<format>
<disr:DisbursementResponse xmlns:disr="urn:Namespaces.user1.se:Service:FinancialManagement:Payment:Disbursement:Response:0001">
<disr:ResponseCode>$1</disr:ResponseCode>
<disr:Message>$2</disr:Message>
</disr:DisbursementResponse>
</format>
<args>
<arg expression="get-property('ResultCode')"/>
<arg expression="get-property('ResultMessage')"/>
</args>
</payloadFactory>
<log category="INFO" level="full" separator=","/>
<send/>
</inSequence>
<outSequence>
<log category="INFO" level="full" separator=",">
<property name="MESSAGE" value="On the way back.."/>
</log>
<send/>
</outSequence>
<faultSequence>
<log category="INFO" level="full" separator=",">
<property name="MESSAGE" value="Error in Call!"/>
</log>
<property action="set" name="RESPONSE" scope="default"
type="STRING" value="true"/>
<enrich>
<source clone="true" type="inline">
<disr:DisbursementResponse xmlns:disr="urn:Namespaces.user1.se:Service:FinancialManagement:Payment:Disbursement:0001">
<disr:ResponseCode>900</disr:ResponseCode>
<disr:Message>General error</disr:Message>
</disr:DisbursementResponse>
</source>
<target action="replace" type="body"/>
</enrich>
</faultSequence>
</target>
<publishWSDL key="conf:user1/ESBConfig/Common/NetPosti/resources/DisbursementService0002.wsdl">
<resource
key="conf:user1/ESBConfig/Common/NetPosti/resources/Disbursement_0002.xsd" location="Disbursement_0002.xsd"/>
</publishWSDL>
[user1#ip-10-20-0-20 ~]$ netstat -pnlt
Proto Recv-Q Send-Q Local Address Foreign Address
State PID/Program name
tcp 0 0 :::8245 :::*
LISTEN 2454/java
tcp 0 0 :::8282 :::*
LISTEN 2454/java
turned out this was only a firewall issue. port 8282 was blocked in wso2 firewall (iptables). thanks for all answers!

Alfresco custom model - not showing in worklow

I am trying to add a text field to the standard adhoc workflow but the field never appears on the screen. I have tried added some other standard bpm: fields to the view and they get displayed but not the custom one.
Is there anything obvious I am missing?
I have cloned the workflow and added the following.
Workflow model:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Definition of new Model -->
<model name="lhwf:workflowmodel"
xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Optional meta-data about the model -->
<description>Workflow Model</description>
<author>O</author>
<version>1.0</version>
<!-- Imports are required to allow references to definitions in other models -->
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0"
prefix="d" />
<import uri="http://www.alfresco.org/model/bpm/1.0"
prefix="bpm" />
<import uri="http://www.alfresco.org/model/workflow/1.0"
prefix="wf"/>
</imports>
<!-- Introduction of new namespaces defined by this model -->
<namespaces>
<namespace uri="http://www.test.com/model/workflow/1.0"
prefix="lhwf" />
</namespaces>
<types>
<type name="lhwf:submitMyTask">
<parent>bpm:startTask</parent>
<properties>
<property name="lhwf:actionRequired">
<type>d:text</type>
<mandatory>true</mandatory>
<multiple>false</multiple>
</property>
</properties>
</type>
</types>
</model>
The share-config-custom.xml file looks like this
<alfresco-config>
<config evaluator="string-compare" condition="activiti$activitiAdhoc2">
<forms>
<form>
<field-visibility>
<show id="bpm:workflowDescription" />
<show id="lhwf:actionRequired" />
<show id="bpm:workflowDueDate" />
` <show id="bpm:workflowPriority" />
<show id="bpm:assignee" />
<show id="packageItems" />
<show id="bpm:sendEMailNotifications" />
</field-visibility>
<appearance>
<set id="" appearance="title" label-id="workflow.set.general" />
<set id="info" appearance="" template="/org/alfresco/components/form/2-column-set.ftl" />
<set id="assignee" appearance="title" label-id="workflow.set.assignee" />
<set id="items" appearance="title" label-id="workflow.set.items" />
<set id="other" appearance="title" label-id="workflow.set.other" />
<field id="bpm:workflowDescription" label="Title">
<control template="/org/alfresco/components/form/controls/textarea.ftl">
<control-param name="style">width: 95%</control-param>
</control>
</field>
<field id="lhwf:actionRequired" label="Action Required" set="info" />
<field id="bpm:workflowDueDate" label-id="workflow.field.due" set="info">
<control template="/org/alfresco/components/form/controls/date.ftl">
<control-param name="showTime">false</control-param>
<control-param name="submitTime">false</control-param>
</control>
</field>
<field id="bpm:workflowPriority" label-id="workflow.field.priority" set="info">
<control template="/org/alfresco/components/form/controls/workflow/priority.ftl" />
</field>
<field id="bpm:assignee" label-id="workflow.field.assign_to" set="assignee" />
<field id="packageItems" set="items" />
<field id="bpm:sendEMailNotifications" set="other">
<control template="/org/alfresco/components/form/controls/workflow/email-notification.ftl" />
</field>
</appearance>
</form>
</forms>
</config>
Thanks in advance
O
I would recommend the following.
<show id="lhwf:actionRequired" force="true"/>
Can you please share the bpmn file here?

Override service definitions parameters by configuration

I have noticed in several bundles that some services definition files had parameters embedded in it, like in the following example:
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<!-- CUSTOMER -->
<parameter key="sonata.customer.admin.customer.class">Sonata\CustomerBundle\Admin\CustomerAdmin</parameter>
<parameter key="sonata.customer.admin.customer.controller">SonataAdminBundle:CRUD</parameter>
</parameters>
<services>
<service id="sonata.customer.admin.customer" class="%sonata.customer.admin.customer.class%">
<tag name="sonata.admin" manager_type="orm" group="sonata_ecommerce" label="B2C" label_translator_strategy="sonata.admin.label.strategy.underscore"/>
<argument />
<argument>%sonata.customer.admin.customer.entity%</argument>
<argument>%sonata.customer.admin.customer.controller%</argument>
<call method="addChild">
<argument type="service" id="sonata.customer.admin.address" />
</call>
<call method="addChild">
<argument type="service" id="sonata.order.admin.order" />
</call>
</service>
</services>
</container>
Those parameters are not exposed as bundle configuration.
I recently discovered it is possible to add a CompilerPass class to override some service definitions. Although, this looks a bit tedious to do.
Is it possible to override those <parameter> by configuration ?
In your app/config/config.yml (or whatever imported config file) add :
parameters:
parameter.name: new_value

Resources