RESTful webservice not reliable

I've successfully created/registered a rest service, but I'm having trouble keeping it alive.
I can understand that a change in code needs a refresh of the service (in administrator or restinitapplication), but the following situations also break a service
"clear template cache" button in administrator
restart of server
And the only way to handle this, is to write a scheduled task which polls the service and calls restinitapplication when it does not respond.
Even if I set the scheduled task to run every 5 minutes, it's still possible that the service is totally unavailable for 4+ minutes.
Other frameworks like Taffy does not have this problem.
Why should i opt for REST if SOAP works many times better? Or am I missing something?

Thanks for the feedback Steve. I agree it sounds more like a bandage.
Directory layout:
application.cfc
/API
     rootSVC.cfc
I use the following code:
Application.cfc
<cfcomponent>
  <cfset This.name = "restExample">
  <cfset this.restsettings.cfclocation = "API" />
    <cfset this.restsettings.skipCFCWithError = true />
  <cffunction name="onApplicationStart">
  <cfset initapp()/>
  </cffunction>
  <cffunction name="onRequestStart">
  <cfif isdefined("url.initapp")><cfset initapp()/></cfif>
  </cffunction> 
  <cffunction name="INITAPP">
  <cfset restinitapplication(expandpath("."), "example")/>
  </cffunction>
</cfcomponent>
rootSVC.cfc
component rest=true restpath="/" {
  remote void function get() httpmethod="get" produces="text/json" {
  var result = { 'ts'= now() };
  restSetResponse({status=200,content=serializejson(result)});
Steps to reproduce:
Step 1: register rest service (administrator or restinitapplication)
Step 2: call /rest/example/ -> everything OK
Step 3: clear template cache in administrator
Step 4: call /rest/example/ -> empty response with header 'server-error:true' ; no logging possible in the application because it doesn't exist apparently. It also returns http 200 OK and not even a 500, so 3rd party clients think everything was ok, but in reality no data was processed.
The only way to get the service going again is to either manually refresh in the administrator or call restinitapplication.
Coldfusion-out.log says:
Jun 3, 2014 12:34:06 PM Error [ajp-bio-8014-exec-6] - The CFC C:\DATA\WWWROOT\test\API\rootSVC.cfc is modified and the application is not refreshed.Refresh the application. The specific sequence of files included or processed is: C:\DATA\WWWROOT\test\API\rootSVC.cfc''
Coldfusion-error.log
Jun 03, 2014 12:34:06 PM com.sun.jersey.server.impl.application.WebApplicationImpl _handleRequest
SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
coldfusion.rest.component.CFComponentProvider$ModifiedResourceException: The CFC C:\DATA\WWWROOT\test\API\rootSVC.cfc is modified and the application is not refreshed.
  at coldfusion.rest.component.CFComponentProvider.getInstance(CFComponentProvider.java:130)
  at coldfusion.rest.component.CFComponentProvider.getInstance(CFComponentProvider.java:70)
  at com.sun.jersey.server.impl.application.WebApplicationContext.getResource(WebApplicationCo ntext.java:238)
  at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83)
  at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
  at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRu le.java:84)
  at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationIm pl.java:1511)
  at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationIm pl.java:1442)
  at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImp l.java:1391)
  at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImp l.java:1381)
  at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
  at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
  at coldfusion.rest.servlet.CFRestServletContainer.service(CFRestServletContainer.java:141)
  at coldfusion.rest.servlet.CFRestServletContainer.service(CFRestServletContainer.java:86)
  at coldfusion.rest.servlet.CFRestServlet.serviceUsingAlreadyInitializedContainers(CFRestServ let.java:556)
  at coldfusion.rest.servlet.CFRestServlet.invoke(CFRestServlet.java:434)
  at coldfusion.rest.servlet.RestFilter.invoke(RestFilter.java:58)
  at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
  at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:2 8)
  at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
  at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
  at coldfusion.rest.servlet.CFRestServlet.invoke(CFRestServlet.java:409)
  at coldfusion.rest.servlet.CFRestServlet.service(CFRestServlet.java:400)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
  at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:303)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42 )
  at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:241)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
  at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:198)
  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.jav a:607)
  at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  at java.lang.Thread.run(Unknown Source)

Similar Messages

  • Making a REST webservice call. Error code: 401 Access to the requested resource is not allowed

    Hi All,
    I’m having a hard time figuring out how to make Rest WebService calls.
    I tried executing this directly through browser and I get an error.
    http:localhost:8080/rest/bean/atg/userprofiling/ProfileServices/loginUser?arg1=[email protected]&arg2=Password
    13:18:20,613 ERROR [RestSecurityServlet] Error code: 401
    Access to the requested resource is not allowed: /atg/userprofiling/ProfileServices
    atg.rest.RestException: Access to the requested resource is not allowed: /atg/userprofiling/ProfileServices
    at atg.rest.processor.RestSecurityProcessor.checkAccess(RestSecurityProcessor.java:546)
    at atg.rest.processor.RestSecurityProcessor.handleGetRequest(RestSecurityProcessor.java:313)
    at atg.rest.processor.RestSecurityProcessor.doRESTGet(RestSecurityProcessor.java:199)
    at atg.rest.servlet.RestPipelineServlet.serviceRESTRequest(RestPipelineServlet.java:417)
    at atg.rest.servlet.RestPipelineServlet.service(RestPipelineServlet.java:260)
    at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:157)
    at atg.servlet.pipeline.PipelineableServletImpl.service(PipelineableServletImpl.java:320)
    at atg.rest.servlet.RestPipelineServlet.service(RestPipelineServlet.java:264)
    at atg.rest.servlet.HeadRestServlet.service(HeadRestServlet.java:130)
    at atg.servlet.pipeline.PipelineableServletImpl.service(PipelineableServletImpl.java:267)
    From the documentation I understand that I need to create a session, is the session only necessary to access secured components since this
    particular method “ProfileServices.loginUser “ has been declared as not secure in restSecurityConfiguration.xml
    Also, are there two different ways in which I can log in
    1.       Using RestSession.createSession providing the username and password.
    2.       Or using ProfileServices.loginUser or ProfileFormHandler
      Can someone please clarify

    If you are invoking the REST web-service from a Java client then you can create a RestSession object using the createSession method. But in your case you seem to be invoking it with a HTTP request which by default would be treated as a GET request by ATG's REST implementation. Therefore being a GET, it would try to fetch a property "loginUser" from /atg/userprofiling/ProfileServices component (based on your URL) which would always fail.
    To invoke loginUser() method of ProfileServices with your passed argument you need to tell ATG's REST system to treat your incoming request not as GET but as a POST request which you can do using  atg-rest-http-method control parameter in your request like this
    http:localhost:8080/rest/bean/atg/userprofiling/ProfileServices/loginUser?arg1=[email protected]&arg2=Password&atg-rest-http-method=POST
    It should work this way provided your restSecurityConfiguration.xml is proper.

  • Error while bringing up ATG REST Webservice

    Hi,
    I am trying to bring a REST Webservice using ATG 9.3 version.I am getting the below errors in the startup of the instance.I have added "REST" module in the Manifest file and am able to see the entry " C:\ATG\ATG9.3\REST\config\config.jar" in CONFIGPATH(Please let me know if there are other ways to find if the service has come up properly).I am trying to connect to the server using JAVA based REST Client as given below.Also,i have placed the jar files in the CLASSPATH of the module.I am hoping that the webservice have not come up properly because of these startup errors.Please help me out to resolve this issue.
    STARTUP EXCEPTION SEEN IN SERVER
    ========================
    2012-06-25 06:20:36,815 INFO [STDOUT] Unable to create class atg.rest.servlet.HeadRestServlet for configuration /atg/dynamo/servlet/dafpipeline/HeadRestServlet java.lang.ClassNotFoundException: No ClassLoaders found for: atg.rest.servlet.HeadRestServlet
    2012-06-25 06:21:56,325 INFO [nucleusNamespace.atg.userprofiling.sso.PassportAuthorityService] Starting passport authority service
    2012-06-25 06:21:56,460 INFO [STDOUT] **** Error
    2012-06-25 06:21:56,460 INFO [STDOUT]      
    2012-06-25 06:21:56,460 INFO [STDOUT] Mon Jun 25 06:21:56 EDT 2012
    2012-06-25 06:21:56,460 INFO [STDOUT]      
    2012-06-25 06:21:56,460 INFO [STDOUT] 1340619716460
    2012-06-25 06:21:56,460 INFO [STDOUT]      
    2012-06-25 06:21:56,460 INFO [STDOUT] /
    2012-06-25 06:21:56,460 INFO [STDOUT]      
    2012-06-25 06:21:56,460 INFO [STDOUT] Unable to set configured property "/atg/dynamo/servlet/Initial.initialServices" atg.nucleus.ConfigurationException: Unable to resolve component /atg/dynamo/servlet/dafpipeline/HeadRestServlet
    2012-06-25 06:22:06,528 INFO [STDOUT] Unable to create class atg.rest.RestConfiguration for configuration /atg/rest/Configuration java.lang.ClassNotFoundException: No ClassLoaders found for: atg.rest.RestConfiguration
    2012-06-25 06:22:06,528 INFO [STDOUT] **** Error
    2012-06-25 06:22:06,528 INFO [STDOUT]      
    2012-06-25 06:22:06,528 INFO [STDOUT] Mon Jun 25 06:22:06 EDT 2012
    2012-06-25 06:22:06,528 INFO [STDOUT]      
    2012-06-25 06:22:06,528 INFO [STDOUT] 1340619726528
    2012-06-25 06:22:06,528 INFO [STDOUT]      
    2012-06-25 06:22:06,528 INFO [STDOUT] /
    2012-06-25 06:22:06,528 INFO [STDOUT]      
    2012-06-25 06:22:06,528 INFO [STDOUT] Unable to set configured property "/atg/rest/Initial.initialServices" atg.nucleus.ConfigurationException: Unable to resolve component /atg/rest/Configuration
    CLASSPATH ENTRY
    ============
    <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/atg-rest-1.0.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/commons-fileupload-1.2.1.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/commons-io-1.4.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/dom4j-1.6.1.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/log4j-1.2.15.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/client-lib/java/atg-rest-client-1.0.jar"/>
    REST CLIENT:
    ========
    import java.util.HashMap;
    import java.util.Map;
    import atg.rest.client.RestClientException;
    import atg.rest.client.RestComponentHelper;
    import atg.rest.client.RestResult;
    import atg.rest.client.RestSession;
    public class RestClient {
    RestSession mSession;
    protected void execute() throws RestClientException {
         System.out.println("inside execute");
         mSession = RestSession.createSession("localhost", 8080, "<USERNAME>", "<PASSWORD>");
         mSession.setUseHttpsForLogin(false);
         try {
         mSession.login();
         System.out.println("Login Successful");
         catch (Throwable t) {
         System.out.println(t);
         finally {
         try {
         mSession.logout();
         System.out.println("Logout Successful");
         catch (RestClientException e) {
         System.out.println(e);
    * @param args
    public static void main(String[] args) {
         System.out.println("inside main");
         // TODO Auto-generated method stub
         RestClient testATGRest = new RestClient();
         try {
         testATGRest.execute();
         catch (Throwable t) {
         System.out.println(t);
    REST CLIENT ERROR SEEN:
    =================
    atg.rest.client.RestClientException: java.io.IOException: Not Found http://localhost:8080/rest/bean/atg/userprofiling/ProfileServices/loginUser
    atg.rest.client.RestClientException: This session is not logged in and cannot be logged out

    I am trying to expose a method using REST Webservice and access the method using the browser.I have followed the steps specified in the thread:
    http://ecomwriter.com/2012/03/19/building-restful-web-services-using-atg/ .Have added a component called ProfileRESTWebservice and have defined a method “getLoginInfo” in the class file. The following entry is placed in the restSecurityConfiguration.xml
    <resource component="/atg/userprofiling/ProfileRESTWebservice" secure="true">
    <method name="getLoginInfo" secure="false"></method>
    </resource>
    But, I am receiving the following exception when trying to access the method using http://localhost:8080/rest/bean/atg/userprofiling/ProfileRESTWebservice/getLoginInfo
    10:07:33,147 ERROR [BeanServlet] Error code: 400
    atg.beans.PropertyNotFoundException: Can't find property named: getLoginInfo in class: com.vs.commerce.profile.ProfileRESTWebservice
    Can't find property named: getLoginInfo in class: com.vs.commerce.profile.ProfileRESTWebservice
    atg.rest.RestException: atg.beans.PropertyNotFoundException: Can't find property named: getLoginInfo in class: com.vs.commerce.profile.ProfileRESTWebservice
    at atg.rest.output.RestOutputCustomizerImpl.outputBeanProperty(RestOutputCustomizerImpl.java:616)
    at atg.rest.processor.BeanProcessor.doRESTGet(BeanProcessor.java:157)
    at atg.rest.servlet.RestPipelineServlet.serviceRESTRequest(RestPipelineServlet.java:394)
    at atg.rest.servlet.RestPipelineServlet.service(RestPipelineServlet.java:237)
    at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
    at atg.servlet.pipeline.PipelineableServletImpl.service(PipelineableServletImpl.java:298)
    at atg.rest.servlet.RestPipelineServlet.service(RestPipelineServlet.java:241)
    Can you pl help me out on this?

  • Url service data control - problem while  POSTing to a restful webservice

    Hi,
    I am trying to call a restful webservice to add a new employee .I have created the url service data control. The service method consumes XML.
    When i am creating the url service datacontrol I selected the http method as POST and giving the servicepath and servicename as the source. After providing the xsd's path and all , when I test the url connection, I am getting the following error message:
    URL Test: Received Error: Method Not Allowed
    This might be because the clicking of the test url button is sending the get request, but the actual method is POST.
    Now under the data controls navigator, If i view the newly created data control, i could see the loadData(Object) method which i assume is for retrieving the data from the service. But since i have mentioned the method as POST, why such a method is created? Also if its there, can I use the same for insert and update? I have used this loadData (Object) method to create a button which calls the webservice upon click. Under the data control property inspector, i changed the supportsupdate attribute's value to true. But when i am trying to save the employee from the jspx page, I am getting the following message in the integrated weblogic's log
    Couldn't get access to the data source. Cause Unsupported Media Type exception in rest service
    And on the server side I am getting the following error message:
    No message body reader has been found for request class Employee, ContentType application/octet-stream.
    I think the request is not going as XML. But while creating the datacontrol i have specified the xsd document for the iput xml request. Does ADF automatically creates the XML from the input parametres? If it does not, then what could be done to achieve that? The default actionListener of the submit button is #{bindings.loadData.execute}. Do i have to override it to send the XML request? Or have I missed anything in trying to achieve what i intend?
    I had refered this link for reference :
    http://docs.oracle.com/cd/E18941_01/tutorials/jdtut_11r2_53/jdtut_11r2_53.html
    Rampal
    Edited by: user12011868 on Jan 22, 2012 10:03 PM

    Hi Frank,
    I had specified the HTTP method as POST as well as PUT. But the same error is appearing in the both the cases.
    URL Test: Received Error: Method Not Allowed
    And when I am clicking on the 'Test URL Connection' , I can't see any option of selecting the HTTP method. This option only appears in the step 2 of creating the URL service data control where we mention the URL endpoint and the source.
    What could be the reason for the error.
    Rampal

  • How to set username and password before redirecting to a RESTful webservice

    I am a .Net developer who has developed a webservice used by my ColdFusion colleagues. They are using ColdFusion 9 but I'm not sure if they have incorporated any of the newer features of ColdFusion in their apps. Here is a snippet of how they have been invoking the webmethods:
    <cfscript>
                         ws = CreateObject("webservice", "#qTrim.webServiceName#");
                         ws.setUsername("#qTrim.trimAcct#");
                         ws.setPassword("#qTrim.trimpwd#");
                         wsString=ws.UploadFileCF("#qTrim.webserviceurl#","#objBinaryData#", "#qFiles.Filename#", "Document", "#MetaData#");
                </cfscript>
    As I understand things, the .setUsername and .setPassword correspond to the Windows credentials the CF Admin set when the URL of the .Net webservice was "registered" and given its "name" (for the CreateObject statement above). I have 4 webmethods that are all invoked in this manner and this SOAP protocol works adequately for us. Please note that this ColdFusion web app authenticates anonymous remote internet users by prompting for a username and password and compares them to an application database (i.e. Microsoft calls this "forms authentication"). Because only a few Windows domain accounts are authorized to call this .Net webservice, the above code always uses the same username/password constants and it all works.
    My question involves the newest webmethod added to the .Net webservice. It requires that callers must invoke it as a RESTful service which means it must be invoked by its URL. Here is a snippet of C# code that invokes it from an ASP.NET webclient:
                string r = txtRecordNumber.Text;
                string baseurl = "http://localhost/sdkTrimFileServiceASMX/FileService.asmx/DownloadFileCF?";
                StringBuilder url = new StringBuilder(baseurl);
                url.Append("trimURL="); url.Append(txtFakeURLParm.Text);
                url.Append("&");
                url.Append("TrimRecordNumber="); url.Append(txtRecordNumber.Text);
                Response.Redirect(url.ToString());
    I assume a ColdFusion script could easily build a full URL as above with appended querystring parameters and redirect. Is there some way for the CF code redirecting to a RESTful webservice (by way of its URL) to set the Username and Password to this Windows account mentioned above? When the DownloadFileCF webmethod is hit it must be with the credentials of this special Windows domain account. Can that be set by ColdFusion someway to mimic the result of the SOAP technique (the first snippet above).
    I hope my question is clear and someone can help me make suggestions to my ColdFusion colleagues. Thanks.

    Can you clarify what you mean by "establish a different Windows identity"?  Usually passing identity to a web site or service means adding something to the request's HTTP headers.  This could be a cookie in the case of .NET forms authentication or the "Authorization" header in the case of basic authentication.
    The SOAP web service invocation code you posted does use basic authentication, according to the CF docs "ColdFusion inserts the user name/password string in the authorization request header as a base64 binary encoded string, with a colon separating the user name and password. This method of passing the user name/password is compatible with the HTTP basic authentication mechanism used by web servers."
    http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec13a13 -7fe0.html
    If you need to mimic the SOAP techinque you should have basic authentication enabled for your REST service endpoints.
    If your authentication method is different then CF developers will need to add the appropriate HTTP headers to their service calls.  Note that calling a REST service from CF would probably be accomplished using the CFHTTP tag if the service is designed to be consumed by the CF server.

  • Invalid request when calling REST-webservice with UTL_HTTP.

    Hello,
    When i try to send some data to a REST-webservice i get as response "INVALID REQUEST"
    I Think it is about the request-body that seems to be no UTF-8.
    I tried to set the characterset with utl_http.set_body_charset(t_http_req, 'UTF-8').
    But when i read the characterset with utl_http.get_body_charset(t_charset);, is still get "ISO-8859-1"
    I am using: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
    Some help would realy be appreciated because i am out of options trying to get the code working..
    ======MY CODE==========
    create or replace procedure ipm40_send_bekendmaking(p_bdmg_id in number)
    as
    r_bekendmaking ipm40_bekendmakingen%rowtype;
    r_gemeente ipm40_gemeenten%rowtype;
    l_url httpuritype;
    t_http_req utl_http.req;
    t_http_resp utl_http.resp;
    t_request_body varchar2(32767);
    t_respond varchar2(32767);
    -- t_teller integer := 1;
    -- t_output varchar2(2000);
    t_start number := 1;
    t_body_lengte number;
    t_chunkdata varchar2(4000);
    t_tijd_1 varchar2(256);
    t_tijd_2 varchar2(256);
    t_timeout integer;
    t_length number;
    t_charset varchar2(256);
    begin
    select *
    into r_bekendmaking
    from ipm40_bekendmakingen
    where id = p_bdmg_id;
    select *
    into r_gemeente
    from ipm40_gemeenten
    where gmte_code = r_bekendmaking.gmte_code;
    l_url := httpuritype.createuri('http://zwolle.stadsbeheer.com:82/apex/ipm40bekendmaking?p_bdmg_id='||r_bekendmaking.id);
    t_request_body := l_url.getClob();
    /* request that exceptions are raised for error Status Codes */
    --Utl_Http.Set_Response_Error_Check ( enable => true );
    /* allow testing for exceptions like Utl_Http.Http_Server_Error */
    --Utl_Http.Set_Detailed_Excp_Support ( enable => true );
    utl_http.set_transfer_timeout(300);
    t_http_req:= utl_http.begin_request( r_gemeente.url_webservice_bekendmakingen
    , 'POST'
    , 'HTTP/1.1');
    utl_http.set_body_charset(t_http_req, 'UTF-8');
    utl_http.get_body_charset(t_charset);
    utl_http.set_authentication(t_http_req,r_gemeente.user_webservice_bekendmakingen,r_gemeente.pw_webservice_bekendmakingen);
    t_length := length(t_request_body);
    utl_http.set_header(t_http_req, 'Content-Type', 'application/xml charset=UTF-8');
    utl_http.set_header(t_http_req, 'Content-Length', t_length);
    utl_http.set_header(t_http_req, 'Transfer-Encoding', 'chunked' ); --
    t_body_lengte := dbms_lob.getlength(t_request_body);
    loop
    t_chunkdata := dbms_lob.substr(t_request_body, 2000, t_start);
    utl_http.write_text ( t_http_req, t_chunkdata );
    t_start := t_start + 2000;
    if t_start > t_body_lengte
    then
    exit;
    end if;
    end loop;
    t_http_resp:= utl_http.get_response(t_http_req);
    utl_http.read_text(t_http_resp, t_respond);
    utl_http.end_response(t_http_resp);
    if instr(t_respond,'Successfully document processed') != 0
    then
    update ipm40_bekendmakingen
    set ind_status = 'S'
    , datum_verzonden = sysdate
    , response = t_respond
    where id = r_bekendmaking.id;
    else
    update ipm40_bekendmakingen
    set ind_status = 'F'
    , datum_verzonden = null
    , response = t_respond
    where id = r_bekendmaking.id ;
    end if;
    commit;
    exception
    when others
    then
    t_tijd_2 := to_char(sysdate,'HH24:MI:SS');
    t_respond := substr(sqlerrm,1,2000);
    update ipm40_bekendmakingen
    set ind_status = 'F'
    , datum_verzonden = null
    , response = t_respond
    where id = r_bekendmaking.id ;
    commit;
    end;
    ===THE RESPOND=============
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    <TITLE>ERROR: The requested URL could not be retrieved</TITLE>
    <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
    </HEAD><BODY>
    <H1>ERROR</H1>
    <H2>The requested URL could not be retrieved</H2>
    <HR noshade size="1px">
    <P>
    While trying to process the request:
    <PRE>
    POST /pushxml/pushxml-bm HTTP/1.0
    Authorization: Basic Ymtfc21hcnRob2xkaW5nOllyZXMzdlFR
    Content-Type: application/xml charset=UTF-8
    Content-Length: 2096
    Transfer-Encoding: chunked
    Connection: close
    </PRE>
    <P>
    The following error was encountered:
    <UL>
    <LI>
    <STRONG>
    Invalid Request
    </STRONG>
    </UL>
    <P>
    Some aspect of the HTTP Request is invalid. Possible problems:
    <UL>
    <LI>Missing or unknown request method
    <LI>Missing URL
    <LI>Missing HTTP Identifier (HTTP/1.0)
    <LI>Request is too large
    <LI>Content-Length missing for POST or PUT requests
    <LI>Illegal character in hostname; underscores are not allowed
    </UL>
    <P>Your cache administrator is [email protected].
    <BR clear="all">
    <HR noshade size="1px">
    <ADDRESS>
    Generated Fri, 12 Aug 2011 17:33:24 GMT by asd2cc001.asp4all.nl (squid)
    </ADDRESS>
    </BODY></HTML>

    Always check the access_log and error_log files of the Apache web server in such a case. This will identify whether the error comes from Apache itself, mod_plsql, the Apex run-time engine, or the Oracle database.
    I see that you're creating a HTTP/1.1 in PL/SQL - however, the web server response indicates a HTTP/1.0 call was received. Unusual. And could be part of the problem.

  • Restful webservice with basic authentication

    Hi, i am running the following:
    Oracle: 11.2....
    ApexListener: 2.....
    Glassfish: 3.0...
    Apex: 4.2.1
    I have successfully established some restful webservices. Now i want to add a basic authentication to them against an APEX Authentication Scheme which is used in one of my APEX Applications. I cannot find any documentation related to Glassfish or ApexListener or APEX to do that.
    Or are the RESTful Service Privileges which belong to APEX User Goups intent to do a basic authentication ?
    Thanks for your help !
    -- Klaus

    OK got it solved by my self.
    Solution:
    Define a RESTFUL (POST, PLSQL) Service with the following HEADER parameters:
    authorization          authorization     IN     STRING
    X-APEX-STATUS-CODE     status          OUT     INTEGER
    As per RFC 1945, the Authorization header value should contain the username:password
    as encoded (base64) string. That is what the RESTclient send (over https)
    In the PLSQL i decode :authorization and validate it against APEX Authentication Scheme.
    The result of the validation drives the response header (:status) in PLSQL with 200 (ok) or 401 (Not Authorized)
    -- Klaus

  • Restful WebService + Jercy + Tomcat

    All,
      I am doing Hello World example for restfull webservice. I have fallowed the http://www.vogella.com/articles/REST/article.html. It is not showing any error or exception in any logs.
    But I could not get the expected the result.
    Please help me in this regard
    Regards
    vijay

    Hi Vijay,
    I'm in the impression, that you are started learning Restful Webservices.
    If yes here is the best solution, hope this helps you.
    I too tried that link given by you, but I didn't find jar for "com.sun.jersey.api.client" package, any how here you can find very clear and simple example.
    Jersey hello world example

  • Report data ( value ... tag) missing in the Webi report retrieved through RestFul Webservice

    I am trying the below URL to get the WEBi report from SAP BO using the Rest Webservice support that is now available.
    http://{serverIP:serverPort}/biprws/raylight/v1/documents/{documentId}
    I am able to get the report but as I compare the same report response when using SAOP Webservice, there seems to be a mismatch in the response. Here is what I see in the SOAP response:
    </td><td c="1" ><cell  ref="1.E.4t" bid="14" h="26" w="231" pad="6,7" sid="-10"><ct >Some arbitrary value</ct><value type="xs:string">Some arbitrary value</value></cell>
    But when I run it through REST, I am missing the <value ..> tag:
    </td><td c="1" ><cell  ref="1.E.4t" bid="14" h="26" w="231" pad="6,7" bt="1" sid="-10"><ct >Some arbitrary value</ct></cell>
    Apart from this right at the start of the xml response, I see some property mismatch as well.
    SOAP has this property extra:
    <property name="output.format.xml.valuemode">yes</property>
    While REST has these property extra:
    <property name="output.format.xml.option.style">1</property>
    <property name="output.format.xml.styledict.fontplatform">html</property>
    <property name="output.format.xml.td.bandinfo">yes</property>
    <property name="source.selected">data</property>
    <property name="xelement.xml.object">yes</property>
    <property name="xelement.xml.object.usemap">yes</property>
    <property name="xelement.xml.object.usersupportedformat">image/png</property>
    I am not sure if:
    the <value ...> tag miss is because of these missing/extra properties or
    current REST support has some issues
    For my application the value tag is a must and I can't do without this, but with REST it seems no way to obtain that.
    Any help or pointer(s) in this regard is appreciated!

    Hello Milind,
    According to our Product Owner Sam Polichouk, the solution should be available for you in 4.1 SP3, which is currently scheduled for release by the end of March 2014 (subject to change).  The product team recommends that you get the raw, unformatted data values from within the Dataset specific call.  This data contains a type to tell the end user what kind of data it is, so you can format it or use it properly.
    The updated documentation for the SDK will be available at SAP BusinessObjects Business Intelligence platform 4.1 – SAP Help Portal Page once the Support Pack is publicly released.

  • Brief explaination of REST,Webservices,CSON and JSON

    brief explaination of REST,Webservices,CSON and JSON

    http://www.simplecodestuffs.com/what-is-the-difference-between-http-and-rest-and-soap-in-web-services/
    SOAP uses WSDL for communication between consumer and provider, whereas REST just uses XML or JSON to send and receive data
    WSDL Defines contract between client and service and is static by its nature. In case of REST contract is somewhat complicated and is defined by HTTP, URI, Media Formats and Application Specific Coordination
    Protocol. It’s highly dynamic unlike WSDL.
    SOAP doesn’t return human readable result, while REST result is readable with is just plain XML or JSON
    This is not true. Plain XML or JSON are not RESTful at all. None of them define any controls(i.e. links and link relations, method information, encoding information etc…) which is against REST as far as messages must be self contained and coordinate interaction
    between agent/client and service.
    With links + semantic link relations clients should be able to determine what is next interaction step and follow these links and continue communication with service.
    It is not necessary that messages be human readable, it’s possible to use cryptic format and build perfectly valid REST applications. It doesn’t matter whether message is human readable or not.
    Thus, plain XML(application/xml) or JSON(application/json) are not sufficient formats for building REST applications. It’s always reasonable to use subset of these generic media types which have strong semantic meaning and offer enough control information(links
    etc…) to coordinate interactions between client and server.
    REST is over only HTTP. HTTP is most widely used and when we talk about REST web services we just assume HTTP. HTTP defines interface with it’s methods(GET, POST, PUT, DELETE, PATCH etc) and various headers
    which can be used uniformly for interacting with resources. This uniformity can be achieved with other protocols as well.
    REST permits many different data formats where as SOAP only permits XML.
    While this may seem like it adds complexity to REST because you need to handle multiple formats, in my experience it has actually been quite beneficial. JSON usually is a better fit for data and parses much faster. REST allows better support for browser clients
    due to it’€™s support for JSON.
    If this helped you resolve your issue, please mark it Answered

  • How to expose a bapi as Rest webservice to consume in web applications

    Hello experts , i now seriously need your suggestion here. Is there a way to expose a BAPI as a rest webservice which can be consumed by a web application in the end.
    What is ICF ( Internet Communication Framework) ? Does this help in generating web service from BAPI ?
    Netweaver Gateway might help to generate services but may not be recommended here in our scenario.

    Please refer Real Web Services with REST and ICF for creation of rest services in sap. The BAPI will have to be called in your handler class.
    I think your best bet would be to transfer the data in the body of the http request and use simple transformation(with multiple roots) to convert the xml data to sap formats. GZIP can also be used to compress the data that is being sent. We have done this successfully in one of our projects.
    However this approach(RESTful Service) would involve more work when compared to the approach suggested by Vikram. If SOAP based services are ok, then you should go ahead with Vikram's approach.

  • Webcenter Spaces ps2 : REST webservices

    Hi All,
    Is there any REST webservice support for Webcenter Spaces ps2, it's there for ps5 but i am looking for PS2... i will appreciate if anyone can help me out with it.
    Thanks

    This is the right documentation for 11g Release 1 PS2 (11.1.1.3). Till PS2, Oracle did not show the patchset number on their documentation. First time, they introduce it from PS3.
    Oracle released limited REST API for few WC Services that includes:-
    1. Discussion Service (http://docs.oracle.com/cd/E14571_01/webcenter.1111/e10148/jpsdg_jive.htm#CHDGJECD)
    2. People Connection Service includes activity stream, connections, message borad, profile and feedback (http://docs.oracle.com/cd/E14571_01/webcenter.1111/e10148/jpsdg_people.htm#BABBBJCE)
    3. Spaces Service (http://docs.oracle.com/cd/E14571_01/webcenter.1111/e10148/jpsdg_spaces.htm#BABIBFCJ)
    4. Content Management Service (http://docs.oracle.com/cd/E14571_01/doc.1111/e15813/toc.htm)
    Poll was not introduced in PS2.
    Regards,
    Imran
    Edited by: Imran Mirza on Jul 6, 2012 5:27 AM

  • Consume a restful webservice using plsql

    Hi
    We need to consume a restful webservice and this needs to be implemented using plsql.
    I know that we can use utl_dbws or utl_http to consume SOAP based web services but
    there is not much information on how to consume restful web services.
    kindly let me know if you have information.
    Cheers
    rigel

    851866 wrote:
    Im looking for the opposite scenario where i need to access a restful web service from plsql.Why would a RESTful call be any different from a normal URL call? HTTP is the transport mechanism - and UTL_HTTP is used in PL/SQL as the client side of a HTTP conversation.
    I posted sample code of a how to use PL/SQL as a brower client in {message:id=1925297} - using a pipeline table to demonstrate the contents returned by the web server in response using plain SQL.
    Depending on what the contents is, you can write it into a BLOB (dealing with binary data returned), a CLOB (for XML data for example), or using varchar2 you can for example parse a text/csv response (no need for a pipeline in such a case).
    The only real issue I can see with a RESTful service is URL construction - as the URL becomes "parameterised" and not just the query string itself, or the data contents (name values) in the POST structure.

  • PI Consume Restful Webservices

    Hi,
    I have scenario in which PI needs to consume Restful webservices.
    I am looking at HTTP receiver adapter in which I want to set appropreate action (POST, GET, PUT or DELETE) based on mapping.
    For example I want to DELETE purcahse order TXU-19282. The http request that sends to Restful webservice looks like as follows.
    DELETE /restfulwebservice-war/poservice/TXU-19282 HTTP/1.0
    Connection: close
    Content-Type: text/xml
    Content-Length: 0
    Pragma: no-cache
    Now my question is how do I set set above information on HTTP receiver adapater. I looked at dynamic configuration and could find it useful.
    Also I am interested in finding how do I set both heder and Payload via mapping?
    Please let me know.
    Thank you,
    Balaji

    I dont think, there is an option to mention (POST, GET, PUT or DELETE) in HTTP reciever adapter.
    usually , it is with JDBC adapter.
    Lets wait for someone to answer as well. am not much sure.
    Also I am interested in finding how do I set both heder and Payload via mapping?
    Usually, header can be filled with XSL mapping. payload can also be filled with XSL or else with simple graphical mapping.
    -santosh.

  • RESTful webservices invocation from OSB.

    Can some one please explain the best way to develop the OSB service to invoke the Restful services.
    1. Only proxy service is enough to handle the request, no need of business service?
    2. when moving the code from one env to other, we use a business service to update endpoint url which is the common approach we generally follow, to make the osb service loosely coupled. how to use the business service when invoking the restservice? does we have the base uri value in the transport url and will get appended with the relative-uri value which we frame as part of the request in the outbound variable in the proxy settings?
    3. when invoking the rest service do we need to append all the request message to the url itself or the request can be passed separately as request body and the main rest uri will have only the key fields as part of the relative-uri?
    4. If we receive huge request message does the URL support the entire request?
    5. how the response/error will be returned when calling the Restful webservice?
    I am assuming this appraoch. Can some one please confirm does this approach works with RESTful service invocation from OSB.
    Request processing:
    Source System request-> Proxy Service -> Transformation to end system specific -> Business service (with base-uri -> http://mainappl.com/web/cmr/{relative-uri from outbound transport}) -> endsystem
    Response processing:
    endsystem Response/Error -> Business Service -> Proxy Service -> transformation to source system specific -> source system.
    Please advice which is the best approach to follow while invoking the RESTful webservices from OSB.
    Thanks..
    Edited by: user12679330 on May 5, 2010 4:33 AM
    Edited by: user12679330 on May 5, 2010 5:00 AM

    Hi,
    Thanks for the update. Can you please explain the above mentioned approach works or how it should be?
    I have one requirement, can some one explain the implementation for this:
    I have one element which is of type unbound. I need to map this element to a single enelement value by separating each element value with a ;, before that I need to check wheteher this element(s) are present in the request then need to appened all these element values to a single element and the end of this element need to append default values.
    Scenario:
    <student>
    <name>asd</name>
    <address>
    <street>street1</street>
    <street>street2</street>
    <street>street3</street>
    ||
    ||
    </address>
    to be mapped it to:
    <student>
    <field name="NAME">asd</field>
    <field name="ADDRESS">street1;street2;street3;default1;default2;default3</field>
    </student>
    Here need to check if street names are present in the request xml, if yes ned to assign it to ADDRESS as mentioned above if street names present or not need to append the default values at the end to the ADDRESS field.
    Thanks in advance.

Maybe you are looking for

  • Adobe CC Desktopmanager ID

    Sehr geehrte Community, ich habe das Abo für die CC abgeschlossen und wollte es installieren, aber in meiner CC Desktopaplikation ist meine alte Adobe-ID angegeben... Diese Email existiert nicht mehr und somit kann ich die E-Mail nicht mehr verifizie

  • SSID + Layer 3 roaming across subnets

    Morning Guys, I have a situation in which I have a site where all the APs are not in the same subnet and thus the IP Addresses received by my clients are different. However, all APs are advertising the same SSID which is permitting roaming at the low

  • Links in PDF files will be opened in a new browser window?

    Hi all, I'm opening PDF files in a browser. I'd really like links in PDF files will be opened in a new window as html. My browsers was configured to allow opening new pages in a new window (FireFox: Tools\Options\Tabs\ New pages should be opened in:

  • How to plug my u330 to a TV?

    Hi, I own a U330 and I want to watch a couple of movies/DVD's on an ordinary TV (an old one, no HDMI/VGA/DVI ! ). Best way to do this would be a S-Video output, but there is none. I'm looking for the cheapest/most efficient solution. Any suggestions?

  • Security Level Medium is not working for PO initial version

    Hi ,     We have maintained security level as Medium in Purchaser user personalization. In order to restart the PO SAVED event workflow only there is a value changed while the PO is awaiting for approval..  Here is the scenario and how the start cond