webMethods

 View Only
Expand all | Collapse all

Microgateway on Docker environment

  • 1.  Microgateway on Docker environment

    Posted Thu March 10, 2022 01:52 AM

    What product/components do you use and which version/fix level?

    10.11 API Gateway

    Are you using a free trial or a product with a customer license?

    Internal License

    What are trying to achieve? Please describe in detail.

    I have created a microgateway and dockerize it by using a local API in my API Gateway as shown below.

    1. .\microgateway.bat createDockerFile --docker_dir . -p 9094 -a Bookstore.zip

    2. docker build -t sag:mcgw-bookstore -f Microgateway_DockerFile .

    3. docker run -d -p 9094:9094 --name mcgw-bookstore sag:mcgw-bookstore

    Both the docker environment and microgateway runs on my local machine. I’m able to access the response from the backend through API Gateway 5555 port via postman however when i try to get the response from 9094 via the container, the microgateway is not able to access the backend as shown in the portainer log below even though the container is healthy. How can I sort this out?

    "

    exception: org.apache.http.conn.HttpHostConnectException: Connect to localhost:5555 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

    Unexpected error during mediationorg.apache.http.conn.HttpHostConnectException: Connect to localhost:5555 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

    Exception during mediate()

    com.softwareag.microgateway.server.MicrogatewayRuntimeException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:5555 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

               at com.softwareag.microgateway.server.http.HttpCaller.send(HttpCaller.java:96)
    
    
    
    at com.softwareag.pg.http.PGHttpEndpoint.send(PGHttpEndpoint.java:90)
    
    
    
    at com.softwareag.pg.config.endpoints.DelegatorEndpoint.send(DelegatorEndpoint.java:65)
    
    
    
    at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:87)
    

    Thanks in advance,

    Do you get any error messages? Please provide a full error message screenshot and log file.

    at com.softwareag.apigateway.runtime.provider.policy.StageSequence.mediate(StageSequence.java:114)

    at com.softwareag.apigateway.runtime.provider.policy.PolicySequence.mediate(PolicySequence.java:182)
    
    at com.softwareag.microgateway.server.MicrogatewayHttpHandler.mediate(MicrogatewayHttpHandler.java:399)
    
    at com.softwareag.microgateway.server.MicrogatewayHttpHandler.process(MicrogatewayHttpHandler.java:220)
    
    at com.softwareag.microgateway.server.MicrogatewayHttpHandler.service(MicrogatewayHttpHandler.java:89)
    
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
    
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)
    
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
    
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435)
    
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
    
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
    
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
    
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350)
    
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    
    at org.eclipse.jetty.server.Server.handle(Server.java:516)
    
    at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
    
    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
    
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
    
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
    
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
    
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
    
    at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
    
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882)
    
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036)
    
    at java.base/java.lang.Thread.run(Thread.java:834)
    

    Caused by: java.net.ConnectException: Connection refused (Connection refused)

    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
    
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
    
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
    
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
    
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    
    at java.base/java.net.Socket.connect(Socket.java:609)
    
    at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
    
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
    


    … 42 more

    exception: org.apache.http.conn.HttpHostConnectException: Connect to localhost:5555 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

    Unexpected error during mediationorg.apache.http.conn.HttpHostConnectException: Connect to localhost:5555 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

    Exception during mediate()

    com.softwareag.microgateway.server.MicrogatewayRuntimeException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:5555 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

    at com.softwareag.microgateway.server.http.HttpCaller.send(HttpCaller.java:96)
    
    at com.softwareag.pg.http.PGHttpEndpoint.send(PGHttpEndpoint.java:90)
    
    at com.softwareag.pg.config.endpoints.DelegatorEndpoint.send(DelegatorEndpoint.java:65)
    
    at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:87)
    
    at com.softwareag.apigateway.runtime.provider.policy.SynapseDelegator.run(SynapseDelegator.java:46)
    
    at com.softwareag.apigateway.runtime.provider.policy.RuntimePolicyAction.run(RuntimePolicyAction.java:60)
    
    at com.softwareag.apigateway.runtime.provider.policy.StageSequence.mediate(StageSequence.java:114)
    
    at com.softwareag.apigateway.runtime.provider.policy.PolicySequence.mediate(PolicySequence.java:182)
    
    at com.softwareag.microgateway.server.MicrogatewayHttpHandler.mediate(MicrogatewayHttpHandler.java:399)
    
    at com.softwareag.microgateway.server.MicrogatewayHttpHandler.process(MicrogatewayHttpHandler.java:220)
    
    at com.softwareag.microgateway.server.MicrogatewayHttpHandler.service(MicrogatewayHttpHandler.java:89)
    
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
    
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)
    
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
    
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435)
    
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
    
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
    
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
    
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350)
    
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    
    at org.eclipse.jetty.server.Server.handle(Server.java:516)
    
    at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
    
    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
    
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
    
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
    
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
    
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
    
    at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
    
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882)
    
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036)
    
    at java.base/java.lang.Thread.run(Thread.java:834)
    

    Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:5555 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
    
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
    
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
    
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
    
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
    
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
    
    at com.softwareag.microgateway.server.http.NativeServiceCaller.invoke(NativeServiceCaller.java:69)
    
    at com.softwareag.microgateway.server.http.HttpCaller.send(HttpCaller.java:80)
    


    … 32 more

    Caused by: java.net.ConnectException: Connection refused (Connection refused)

    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
    
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
    
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
    
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
    
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    
    at java.base/java.net.Socket.connect(Socket.java:609)
    
    at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
    
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
    


    … 42 more

    Error occurred while processing the request, Error: org.apache.http.conn.HttpHostConnectException: Connect to localhost:5555 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

    Have you installed latest fixes for the products

    Yes


    #webMethods
    #Microgateway
    #API-Management


  • 2.  RE: Microgateway on Docker environment

    Posted Thu March 10, 2022 04:21 AM

    Hi Deniz,
    You need to update the endpoint of your API, it’s currently showing as localhost. You need to add a straight thru routing policy to your API and specify the host name of the docker container for your IS.
    regards,
    John.


    #API-Management
    #Microgateway
    #webMethods


  • 3.  RE: Microgateway on Docker environment

    Posted Thu March 10, 2022 07:39 AM

    Hi John,

    Instead of putting the hostname in the straight through policy of all the APIs that will be dockerized; is there a way passing the hostname in the docker run command as “docker run -d -p 9095:9095 --add-host=host.docker.internal:SAG1LTD1Z2 --name mcgw-bookstore2 sag:mcgw-bookstore2” vs?
    Or would putting the below in the docker file sort out the issue?

    ENV mcgw_api_gateway_url http://<>:</rest/apigateway

    ENV mcgw_api_gateway_user <>

    ENV mcgw_api_gateway_password <>


    #Microgateway
    #webMethods
    #API-Management