XSQL Action Handlers vs. Java extentions

Dear OTN team,
You mentioned that you're planning to eliminate Action handlers and replace them by XSLT/Java extension API. In fact, you already have it. When I replaced the old parser by the newest one, there is release notes and extension readme files that allow any Java classes and 2 Oracle extensions (output and node-set()).
I used it quite extensively with JDeveloper 3.1 and it works!
Therefore, I have 1 question and 2 suggestions.
Q: What is the impact of doing this - IAS, Portal-To-Go, XSQL engine standalone?
S1: It seems almost mandatory to have an extension function nodeSetToString() (and ResultSetToString(), however it just a shortcut to
nodeSetToString(node-set(<<result-set>>)) ).
S2: At present time a CLOB field is required to be transformed to CDATA in order to be inserted, which is not natural and requires S2. Wouldn't it be better if XSU will handle it automatically? It is very easy for Oracle to implement, because, I suppose, in XMLSave you parsing using a top-to-bottom approach.
Thank you,
Dmitriy

<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Steven Muench ([email protected]):
A future version of XSQL Pages will integrate the XSQL Action Handlers as XSLT extension elements. At present, the Oracle XSLT engine supports extension functions but not extension elements.
I don't understand the question about impact on IAS, Portal-to-go, or XSQL in this regard.
On your S2, can you be more precise about what you'd like XSU to handle automatically?<HR></BLOCKQUOTE>
Steve,
1. Regarding IAS,XSQL and so on: what is the performance the extension functions vs. the Action Handlers. Are there any issues with caching and so forth? Do you recommend their usage for now?
2. Now in order to combine fixed table columns with XML in CLOBs for the flexible content XSU automatically converts CLOBs into CDATA which is not natural for this kind of scenario. Moreover, it is quite painful during insertion. To make posted XML to be inserted into table/view one should write DocumentFragment-to-String type function as extension and use it in the XSL to transform CLOB related XML tag and its contents into CDATA! Plus the XSQL documentation doesn't say anything about that.
It'd be nice to have a special attribute in the xsql:query, xslq:insert, xsql:update, xsql:delete(?) to enable/disable CLOB-to-XML-fragment or CLOB-to-CDATA transformation for the set of tags (probably space separated).
Plus, it seems almost imperative to have the oracle implemented DocumentFragment-to-String extention function.
Thank you,
Dmitriy

Similar Messages

  • Where to deploy custom XSQL action handlers?

    I need to write some custom XSQL action handlers in Java. I am using JDeveloper 3.2 with the Oracle HTTP Server (= Apache + JServ) on Windows NT 4.0.
    When I complete my action handler(s) and package them into a JAR file, where do I put them so they are picked up by the server? If I run a test XSQL page from JDeveloper, Web-to-Go finds it if I put the JAR file under Apache\Web-inf\lib, but not when I try it from a browser.
    The Muench book (p. 602-603): "...make sure this .jar is included in the server CLASSPATH...". Is that different from the system-level classpath? Would that be in jserv.properties or where?
    Is there a document that walks you through this particular jungle?
    Best regards,
    Jere
    null

    Thanks Eric,
    it helped. The JAR file just needs to be in the JServ path. I'm still at loss though how to configure JServ so that the JAR gets reloaded if (when) it changes. It is a pain to restart Oracle HTTP server every time I change the JAR file, which is often during development. I thought of playing around with servlet zones, but decided not to waste time since action handlers are not really servlets.
    --Jere
    null

  • Obiee 11.1.1.6  Actions- Invoke a Java Method screen is empty

    Hi All,
    I have created and deployed an EJB for obiee11g by using the example provided in the below link
    http://www.rittmanmead.com/2010/09/oracle-bi-ee-11g-action-framework-java-ejbs-and-pdf-watermarks/
    I have mapped oracle.bi.actions also
    But I am not able to see the java method in the obiee11g Actions- Invoke a Java Method screen .The screen is empty
    I have configured the ActionFrameworkConfig.xml as follows
    <?xml version="1.0" encoding="UTF-8"?>
    <obi-action-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="afconfig.xsd">
    <aliases/>
    <registries>
    <registry>
    <id>reg05</id>
    <name>WaterMark EJBS</name>
    <content-type>java</content-type>
    <provider-class>oracle.bi.action.registry.java.EJBRegistry</provider-class>
    <description>WaterMark BIEE</description>
    <location>
    <path/>
    </location>
    <custom-config>
    <ejb-targets>
    <appserver>
    <context-factory>weblogic.jndi.WLInitialContextFactory</context-factory>
    <jndi-url>t3://localhost:9704</jndi-url>
    <server-name>localhost</server-name>
    <account>WLSJNDI</account>
    <ejb-exclude>mgmt</ejb-exclude>
    <ejb-exclude>PopulationServiceBean</ejb-exclude>
    </appserver>
    <ejb-app>
    <server>localhost</server>
    <app-context>watermark</app-context>
    </ejb-app>
    </ejb-targets>
    </custom-config>
    </registry>
    </registries>
    <content-types>
    <content-type>
    <typename>webservices</typename>
    <displayname>Web Services and BPEL Processes</displayname>
    <actionType>WebServiceActionType</actionType>
    </content-type>
    <content-type>
    <typename>misc</typename>
    <displayname>Mixed Services</displayname>
    <actionType>URLActionType</actionType>
    </content-type>
    <content-type>
    <typename>java</typename>
    <displayname>Java Services</displayname>
    <actionType>JavaActionType</actionType>
    </content-type>
    </content-types>
    <accounts>
    <account>
    <name>WLSJNDI</name>
    <description>Account used to access WLS JNDI.</description>
    <adminonly>false</adminonly>
    <credentialkey>JNDIUser</credentialkey>
    <credentialmap>oracle.bi.actions</credentialmap>
    </account>
    </accounts>
    </obi-action-config>
    Please help me to resolve this issue
    Regards
    Deepz

    1. check your t3 port no, in my case it's 7001.
    so i changed "<jndi-url>t3://localhost:9704</jndi-url>" to "<jndi-url>t3://localhost:7001</jndi-url>"
    2. if you run obiee 11.1.1.6.0 above, you don't need below.
    <credentialmap>oracle.bi.actions</credentialmap>
    so please drop this line.
    3. restart your server and check there's no error log when loading ActionFrameworkConfig.xml.
    Good Luck !!!

  • Possibility of calling standard actions from a java program

    Hi ,
    I am working for a project where customer wants to have option of saving orders as draft only and later convert to order if need be. However since we do not want many drafts to reside on server there is a need to delete these at a specified time. For draft orders I am using order templates since they stay in the database without getting converted to orders. Now I do not know how to go about the deletion part.
    i need to write a program that would run on the server and which would fetch the templates (drafts) that have been created till a particular time and call the delete action of the template. Now the question is how do i call these actions from a java program where this java program will have to run on the server end (ie will be a backend process).
    Please suggest.
    Thanks
    Roopali

    hello roopali,
    you can create a separate thread that will run your
    code that will check for stale drafts and delete them.
    it is just like a session management program but here
    we will be looking over the drafts and not the session
    objects.
    now if you want the invocation of the action from another
    program, a socket program would suffice but opening ports
    will cause you network connections thru firewall.
    if you can make use of HTTP servlet as your service
    provider e.g., you can then just pass some action params
    to invoke it.
    regards
    jo

  • Invalid SOAP action when using java ws WebService

    Hi all,
    this is a slightly more detailed error for a problem i posted recently. I am connecting to a web service that was generated from WSDL. It has two methods "HelloWorld" and "HelloSayFirstName". As defined in the WSDL, the methods use the SOAP action document style. I want to add a cookie to the http header, so after the port is created, I use the following to add the header to the requestContext:
              BindingProvider bindingProvider = (BindingProvider) servicePort;
              Map<String, Object> requestContext = bindingProvider.getRequestContext();
              List<String> cookies = new ArrayList<String>();
              cookies.add("mycookie=mytoken");
              HashMap<String, List<String>> httpHeaders = new HashMap<String, List<String>>();
              httpHeaders.put(HTTPConstants.HEADER_COOKIE, cookies);
              requestContext.put(MessageContext.HTTP_REQUEST_HEADERS, httpHeaders);
    This works when I call the first method (HelloWorld) - the first activity message sent to the server contains the following:
    <HttpRequest>
    <Method>POST</Method>
    <QueryString></QueryString>
    <WebHeaders>
    <Cache-Control>no-cache</Cache-Control>
    <Connection>keep-alive</Connection>
    <Pragma>no-cache</Pragma>
    <Transfer-Encoding>chunked</Transfer-Encoding>
    <Content-Type>text/xml; charset=UTF-8</Content-Type>
    <Accept>*</Accept>
    <Cookie>mycookie=mytoken</Cookie>
    <Host>exampleHost</Host>
    <User-Agent>Java/1.5.0_14</User-Agent>
    <SOAPAction>"http://tempuri.org/IMyService/HelloWorld"</SOAPAction>
    </WebHeaders>
    </HttpRequest>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://exampleHost/WebServices/WCFService/Service.svc</To>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/IMyService/HelloWorld</Action>
    </s:Header>
    <soap:Body>
    <HelloWorld xmlns="http://tempuri.org/" xmlns:ns2="http://schemas.datacontract.org/2004/07/" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/">
    <myValue1>world</myValue1>
    </HelloWorld>
    </soap:Body>
    </soap:Envelope>
    However, after this method, the httpHeaders in the requestContext object have been updated to include the "Accept" header and the "SOAPAction" header - which is the incorrect action! Now, when I call the method "HelloSayFirstName" I get the following:
    <HttpRequest>
    <Method>POST</Method>
    <QueryString></QueryString>
    <WebHeaders>
    <Cache-Control>no-cache</Cache-Control>
    <Connection>keep-alive</Connection>
    <Pragma>no-cache</Pragma>
    <Transfer-Encoding>chunked</Transfer-Encoding>
    <Content-Type>text/xml; charset=UTF-8</Content-Type>
    <Accept>*</Accept>
    <Cookie>mycookie=mytoken</Cookie>
    <Host>exampleHost</Host>
    <User-Agent>Java/1.5.0_14</User-Agent>
    <SOAPAction>"http://tempuri.org/IMyService/HelloWorld"</SOAPAction>
    </WebHeaders>
    </HttpRequest>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://exampleHost/WebServices/WCFService/Service.svc</To>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/IMyService/HelloWorld</Action>
    </s:Header>
    <soap:Body>
    <HelloSayFirstName xmlns="http://tempuri.org/" xmlns:ns2="http://schemas.datacontract.org/2004/07/" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/">
    <dataContractValue></dataContractValue>
    </HelloSayFirstName>
    </soap:Body>
    </soap:Envelope>
    It seems that the SOAPAction in the http header and the soap header is incorrect. Is there any reason why the requestContext would keep hold of the action that was previously called, and not use the new action? I'm stumped here - any help would be greatly appreciated.
    Cheers.

    Does not only happen when using JAX-WS.
    the following servlet code is enough to reproduce the problem :
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/xml;charset=\"utf-8\"");
    It only occurs on 10.1.3.4.0 (works fine on 10.1.3.3.0 and 11.1.1.1.0 TP4)
    Regards

  • Workflow step (Approve Action) calling custom Java Service and "passing params"

    Good Afternoon, Fellow Coders!
    Normally I research and do proof of concepts until I find a solution but given super tight deadlines, I just don't have time - so I need your help.
    I am trying to have an Workflow Approve Action (Workflow Exit Event idocScript call) call a Custom Component (Java Service) AND "pass" some kind of parameters (bare minimum dDocName)
    In a perfect world it would be as simple as:    processContentInfo(String dDocName, String xMyCode1, String xMyCode2);
    But since I am calling the Java Service from idocScript (via executeService) I cannot directly pass params via the API.
    Is there a simple way to do this??
    It seems like if you can't directly pass params you could at least set them in the managed container (m_binder) and just know to pick them up on the Java side via some DataBinder like m_binder.getLocal(
    Am I missing a simple idocScript function that will let you do this?
    Note: I am NOT executing the Service from a URL so the normal ?param1&param2 -> m_binder.getLocal  solution is no good.
    Also, Bex's book warns about Service Classes "not easily being able to call other UCM Services"....  My Custom Service needs to do exactly that (as well as JDBC and other stuff). Is this really an issue??
    Seems like as long as I have dDocName I could use RIDC to hit whatever I want as long as I know how to use a binder, etc - is there some mystic nuance that prevents this?  Or was he just saying it's hard UNLESS you know RIDC well??
    Any and all quality advice is appreciated!  And please, try to give me a detailed answer as opposed to something vague like "try a Service Handler", I need something I can quickly digest.
    Thanks in advance!

    You can set parameters for the service call by setting Idoc Script variables before you call executeService.
    <$dDocName="TEST12345"$>
    <$param1="09876"$>
    <$param2="ABCDEFG"$>
    These variables are then available via the service DataBinder.
    Here is information about how to execute a service from a custom component. There should not be any issues doing this.
    http://www.redstonecontentsolutions.com/5/post/2012/05/executing-a-service-from-aservicehandler.html
    http://jonathanhult.com/blog/2012/06/execute-a-service-from-a-java-filter/
    Jonathan
    http://jonathanhult.com

  • Combine standard task (ABAP method call) and additional UWL Action Handlers

    Hi, i have defined a task with an asynchronous ABAP method call and a terminating event which i want to use "as is" in the universal worklist, that means that the standard action has to be the ABAP method call defined for the task.
    In addition to that i want to add an extra button to the workitem view in the worklist which opens a web dynpro application. The web dynpro needs a parameter from the workitem container. Opening the web dynpro is not required for completing the task, so i do not consider using secondary methods.
    I created an UWLConfiguration for the task type without defining the defaultAction attribute, since defaultAction should not be overwritten. I wanted to use SAPWebDynproABAPLauncher to generate the button since i can easily include values from the workitem container in the call.
    When executing a workitem from the worklist the ABAP method call is not performed, instead a window opens which just displays the workitem. The button to web dynpro is generated and works fine.
    Does anyone have a clue how i can use UWL to define an additional button with SAPWebDynproABAPLauncher without overwriting the standard task definition?
    My definition:
    <ItemTypes>
        <ItemType
    name="uwl.task.webflow.TS95100103"
    connector="WebFlowConnector"
    defaultView="DefaultView">
          <ItemTypeCriteria
    systemId="ED1CLNT100"
    externalType="TS95100103"
    connector="WebFlowConnector"/>
          <CustomAttributes>
            <CustomAttributeSource
    id="WEBFLOW_CONTAINER"
    objectIdHolder="externalObjectId"
    objectType="WebFlowContainer"
    cacheValidity="final">
              <Attribute
    name="HROBJECT_OBJEKTID"
    type="string"
    displayName="HROBJECT_OBJEKTID"/>
            </CustomAttributeSource>
          </CustomAttributes>
          <Actions>
            <Action
    name="launchWebDynPro"
    groupAction=""
    handler="SAPWebDynproABAPLauncher"
    returnToDetailViewAllowed="yes"
    launchInNewWindow="yes"
    launchNewWindowFeatures="resizable=yes,scrollbars=yes,
    status=yes,toolbar=no,menubar=no,
    location=no,directories=no">
              <Properties>
                <Property
    name="WebDynproApplication" value="hr01_app"/>
                <Property
    name="newWindowFeatures"
    value="resizable=yes,scrollbars=yes,status=yes,
    toolbar=no,menubar=no,location=no,directories=no"/>
                <Property
    name="DynamicParameter"
    value="candidacy_id=${item.HROBJECT_OBJEKTID}
    &amp;from_workflow=X"/>
                <Property
    name="openInNewWindow" value="yes"/>
                <Property
    name="System" value="SYSTEM_ALIAS_ERP"/>
                <Property
    name="WebDynproNamespace" value="hr01"/>
              </Properties>
              <Descriptions default="Show"/>
            </Action>
          </Actions>
        </ItemType>
      </ItemTypes>
    Thank you very much, best regards, Martin
    Edited by: Martin Sommer on Dec 1, 2008 5:51 PM

    found a solution with transaction launcher and custom transaction

  • Action Handlers

    Hello
    i have some trouble to get some of the standard actions up and running.
    Here is the code sample - imagine it within some callback function of menu item.
    if(avDoc==NULL) {
              // if no doc is loaded, make a message.
              strcat(str,"There is no PDF document loaded in Acrobat.");
         else {
              PDDoc pdDoc = AVDocGetPDDoc (avDoc);
              char* lStrActionName = "URI";
              ASAtom lNewActionAtom = ASAtomFromString(lStrActionName);
              PDAction lNewAction = CosNewNull();
              CosObj lCosNewPDAction = CosNewNull();
              // Create new action in the activePDDoc
              lNewAction = PDActionNew (pdDoc, ASAtomFromString(lStrActionName));
              lCosNewPDAction = PDActionGetCosObj (lNewAction);
              AVActionHandler lAVActionHandler = AVAppGetActionHandlerByType(lNewActionAtom);
              if (lAVActionHandler != NULL){
                   AVActionHandlerProcs lAVActionHandlerProcs = AVActionHandlerGetProcs(lAVActionHandler);
                   //AVAppRegisterActionHandler (lAVActionHandlerProcs,NULL,NULL,NULL);
                   // Fill action dictionary
                   if ((lAVActionHandlerProcs->FillActionDict)  && (strcmp(lStrActionName,"Launch") != 0) )
                   lAVActionHandlerProcs->FillActionDict(NULL, lCosNewPDAction, avDoc);
                   // Show action dialog
                   if ((lAVActionHandlerProcs->size == sizeof(AVActionHandlerProcsRec))
                        && lAVActionHandlerProcs->DoPropertiesEx)
                        //EnableWindow(false);
                        lAVActionHandlerProcs->DoPropertiesEx(NULL, avDoc, &lNewAction, 1);
                   } else {
                        if (lAVActionHandlerProcs->DoProperties){
                             //EnableWindow(false);
                             lAVActionHandlerProcs->DoProperties(NULL, lNewAction, avDoc);
    Now when im trying to get the "URI" action dialog this line gives me unhandled exception
    lAVActionHandlerProcs->DoPropertiesEx(NULL, avDoc, &lNewAction, 1);
    When i try to load some other action like for example "Launch" or "JavaScript" everithing runs smoothly.
    Any idea what can cause this?
    Thanks a lot in advance!

    Ok you have probably set me on the right track. I have done some investigation and this is what i learned.
    Lets say that we are right now working with only URI action
    The code in the first post doesnt run correctly with a blank document - or document that doesnt contain any already working URI actions
    however
    When i try to run the same chunk of code on document with at least one URI action on page(in annot for example), then the code runs flawlessly and displays my desired URI props dialog.
    I have compared the ActionHandlerProcs in both cases and there are some major differencies between them.
    I am creating the AcionHandler from the ASAtomFromString("URI") in both cases so i think that they should be identical but they arent.
    Does it makes sense?

  • Advice request : incorporating graphs/charts within XSQL publishing framework

    I wonder if anyone out there could offer any useful suggestions.
    I am fairly comfortable with using XSQL to produce fairly advanced web pages.
    However, if I wanted to incorporate graphics, specifically graphs and charts, what is the best way of going about this.
    All the data that I require to plot the graphs/charts would reside in the database.
    I guess Java will be involved, but how would I invoke rountines that would generate graphs/charts on the fly and embed these jpgs/gifs into my XSLT transformed XSQL web pages? Would XSQL action handlers be the best option, for example?
    I would prefer to avoid SVG due to the plug-in requirement for web browsers.
    Any code samples would be greatly appreciated.
    Thanks in advance

    Hi Jeff,
    You can use Oracle Business Intelligence Graph bean component for generating Graph on the server side.
    oracle.dss.graph.Graph
    This bean provides methods to create graph in GIF, PNG, JPG format. This bean can be used with non OLAP data source too.
    See
    http://otn.oracle.com/products/bib/content.html
    You can also used 'Persepcitve for Java' shipped with JDdeveloper.
    See <oracle-home>/jlib/Lw_PfjBean.jar
    Thanks,
    Sathish.

  • Is possible to send the Iterator content to XSQL page ?

    Hi all,
    I have a requirement to create a Search Form (using ADF Search Form) , display the "search result" on the page, then by pressing a button, the "search result" is converted to XSQL page.
    I create a Custom XSQL Action Handler (ADFViewObject.java) like in Steve Muench's ADFToyStore to handle this.
    The problem is : When I run it and press the button I get this error :
    Oracle XML Developers Kit 10.1.3.1.0 - Production
    XML-25014: Resulting page is an empty document or had multiple document elements.
    Below is my code :
    CashInView1ResultIterator is the iterator used by search result.
    cashin.xsql :
    <?xml version="1.0" encoding='windows-1252'?>
    <!--
    | Uncomment the following processing instruction and replace
    | the stylesheet name to transform output of your XSQL Page using XSLT
    -->
    <?xml-stylesheet type="text/xsl" href="pdf.xsl" serializer="FOP"?>
    <xsql:action xmlns:xsql="urn:oracle-xsql" handler="itt.general.util.ADFViewObject"
    iterator="CashInView1ResultIterator">
    </xsql:action>
    On the button's backing bean :
    public String pdf_action() throws IOException {
    ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();
    HttpServletResponse response = (HttpServletResponse)ectx.getResponse();
    //HttpSession session = (HttpSession)ectx.getSession(false);
    //session.invalidate();
    System.out.println("xsql");
    response.sendRedirect("../cashin.xsql");
    return null;
    What is wrong here ?
    Thank you very much,
    xtanto

    Hi Steve,
    I have not tried the ADFToyStore demo. and I think the context is rather different, ADFToyStore use Struts data page to call the xsql page, while in my application I use ADF Faces.
    And I dont know how to integrate XSQL with adf faces.
    Could this be the problem ???
    I call the XSQL page from backing beans :
    public String pdf_action() throws IOException {
    ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();
    HttpServletResponse response = (HttpServletResponse)ectx.getResponse();
    response.sendRedirect("../cashin.xsql");
    return null;
    Thank you,
    xtanto

  • Java.lang.NullPointerException at oracle.xml.xsql.XSQLHttpUtil.HttpRequestAsXMLDocume

    Hello Everyone,
    I get the following error in the <request> element of my XML result from any XSQL page. This always occurs when the page is linked from a JSP page using a simple hyperlink, accessed with <jsp:forward> or accessed with <jsp:include>. This occurs both when I include a request parameter and when I don't.
    If I access the XSQL page directly through its URL in my browser or as a link from a regular HTML page this does not occur.
    However, once I link or include to the XSQL page and get the error I continue to get it until I stop and restart the server.
    Oracle XDK Java 9.2.0.2.0 Production
    Development Environment: WebSphere Studio Application Developer 4.02
    OS: NT 4.0 SP6
    Even this simple Hello World! example produces the error when linked from a JSP page:
    <?xml version="1.0"?>
    <page connection="ghms" xmlns:xsql="urn:oracle-xsql">
         <xsql:include-request-params/>
    <xsql:query>
              SELECT 'Helo World!' AS text
              FROM DUAL
    </xsql:query>
    </page>
    Error:
    <request>java.lang.NullPointerException
         at oracle.xml.xsql.XSQLHttpUtil.HttpRequestAsXMLDocument(XSQLHttpUtil.java:116)
         at oracle.xml.xsql.XSQLServletPageRequest.getRequestParamsAsXMLDocument(XSQLServletPageRequest.java:382)
         at oracle.xml.xsql.actions.XSQLIncludeRequestHandler.handleAction(XSQLIncludeRequestHandler.java:39)
         at oracle.xml.xsql.XSQLDocHandler.getDocument(XSQLDocHandler.java:149)
         at oracle.xml.xsql.XSQLPageProcessor.process(XSQLPageProcessor.java:140)
         at oracle.xml.xsql.XSQLServlet.doGet(XSQLServlet.java:60)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.ibm.servlet.engine.webapp.StrictServletInstance.doService(ServletManager.java:827)
         at com.ibm.servlet.engine.webapp.StrictLifecycleServlet._service(StrictLifecycleServlet.java:167)
         at com.ibm.servlet.engine.webapp.IdleServletState.service(StrictLifecycleServlet.java:297)
         at com.ibm.servlet.engine.webapp.StrictLifecycleServlet.service(StrictLifecycleServlet.java:110)
         at com.ibm.servlet.engine.webapp.ServletInstance.service(ServletManager.java:472)
         at com.ibm.servlet.engine.webapp.ValidServletReferenceState.dispatch(ServletManager.java:1012)
         at com.ibm.servlet.engine.webapp.ServletInstanceReference.dispatch(ServletManager.java:913)
         at com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:523)
         at com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:282)
         at com.ibm.servlet.engine.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:112)
         at com.ibm.servlet.engine.srt.WebAppInvoker.doForward(WebAppInvoker.java:91)
         at com.ibm.servlet.engine.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:184)
         at com.ibm.servlet.engine.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:67)
         at com.ibm.servlet.engine.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:106)
         at com.ibm.servlet.engine.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:125)
         at com.ibm.servlet.engine.oselistener.OSEListenerDispatcher.service(OSEListener.java:315)
         at com.ibm.servlet.engine.http11.HttpConnection.handleRequest(HttpConnection.java:60)
         at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:323)
         at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:252)
         at com.ibm.ws.util.CachedThread.run(ThreadPool.java:122)
    </request>

    Please refer to Oracle bug 3973353 in Metalink. The solution is as following:
    - extract BC4JRequestProcessor.java from \BC4J\src\bc4jstrutssrc.zip
    - copy BC4JRequestProcessor.java to ...\project\src\oracle\jbo\html\struts11\BC4JRequestProcessor.java
    - comment the following lines (lines 347 to 351):
    // Overide only if the action mapping is a BC4JActionMapping.
    // ActionMapping mapping = (ActionMapping)
    // request.getAttribute(Globals.MAPPING_KEY);
    // if (! (mapping instanceof BC4JActionMapping) )
    // return super.processMultipart(request);
    Regards,
    Rayyen

  • Java.lang.InstantiationException when using Action class with constructor

    Hi everyone,
    I'm using the insertNewNode() method from this class in another action class, which works fine. But when this action itself is called, I get an infinite java.lang.InstantiationException (until the stack is overflowed). I'm initiating the fields required in every method in a constructor. If there is no constructor, this action works fine again. What's wrong?
    public class GliederungNewAction implements Action {
         private final String DEFAULT_DESCRIPTION = "Neuer Punkt";
         private OracleConnection connection;
         private String username;
         private String catalogue;
         private String attribute;
         private String parent_attr;
         private int parent_sequenceNr;
         private int requiredSequenceNumber;
         public GliederungNewAction(OracleConnection connection, String username, String catalogue) {
              this.connection = connection;
              this.username = username;
              this.catalogue = catalogue;
         public String perform(ActionMapping mapping, HttpServletRequest request,
                   HttpServletResponse response) {
              HttpSession session = request.getSession();
              // fetch the necessary parameters from the JSP site
              // the parent attribute is the selected attribute!
              parent_attr = request.getParameter("attr");
              catalogue = request.getParameter("catalogue");
              parent_sequenceNr = Integer.parseInt(request.getParameter("sort_sequence"));
              username = session.getAttribute("username").toString().toUpperCase();
              // connect to database    
              db.SessionConnection sessConn = (db.SessionConnection) session.getAttribute("connection");
              if (sessConn != null) {
                   try {
                        sessConn.setAutoCommit(false);
                        connection = (OracleConnection)sessConn.getConnection();
                        // insert the new node into DB
                        insertNewNode(DEFAULT_DESCRIPTION, parent_attr, parent_sequenceNr);               
                        connection.commit();
                        // set attributes for JSP post-action operations
                        request.setAttribute("attr", attribute);
                        request.setAttribute("parent_attr", parent_attr);
                   } catch(SQLException ex) {
                        if ( ex.getErrorCode() == 20001 ) {
                             return "error_edit.do";
                        } else { // for all other error codes, rollback and return general error page
                             try {
                                  connection.rollback();
                                  ex.printStackTrace();
                                  return "error_general.do";
                             } catch (SQLException e) {
                                  System.err.println("Rollback failed!");
                                  e.printStackTrace();
                                  return "error_general.do";
                             } // end of catch     
                        } // end of else
                   } // end of catch
              return mapping.getForward();
            // sample method
          * Creates, fills and executes a prepared statement to insert a new entry into the specified table, representing
          * a new node in the catalogue.
          * @param parent_attr TODO
          * @param parent_sequenceNr TODO
          * @throws SQLException
         public void insertNewNode(String description, String parent_attr, int parent_sequenceNr) throws SQLException {
                   requiredSequenceNumber = getRequiredSequenceNumber(parent_attr, parent_sequenceNr);
                   int freeSequenceNumber = getFreeSequenceNumber(requiredSequenceNumber);
                   int lastPosition = getLastNodePosition( getLastChildAttribute(parent_attr) );
                   attribute = createNewNodeAttribute(parent_attr, lastPosition);
                   String callAddNode = "{ call package.addNode(:1, :2, :3, :4, :5, :6, :7) }";
                   CallableStatement cst;
                   cst = connection.prepareCall(callAddNode);
                   cst.setString(1, username );
                   cst.setString(2, catalogue);
                   cst.setString(3, attribute);
                   cst.setString(4, parent_attr);
                   cst.setString(5, description);
                   cst.setInt(6, requiredSequenceNumber);
                   cst.setInt(7, freeSequenceNumber);
                   cst.execute();
                   cst.close();
    java.lang.InstantiationException: action.GliederungNewAction
         at java.lang.Class.newInstance0(Unknown Source)
         at java.lang.Class.newInstance(Unknown Source)
         at action.ActionMapping.perform(ActionMapping.java:54)
         at ControllerServlet.doResponse(ControllerServlet.java:92)
         at ControllerServlet.doPost(ControllerServlet.java:50)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
         at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:431)
         at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:355)
         at ControllerServlet.doResponse(ControllerServlet.java:103)
         at ControllerServlet.doPost(ControllerServlet.java:50)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         .......

    You're welcome.
    Still, I would report this as a bug at the Struts mailinglist/issuetracker. This silly behaviour shouldn't happen. Once an InstantiationException, okay, but in an infinite loop?!? That's definately a bug. Also the detail message may be more informative, e.g. "No default constructor found" or so.

  • Oracle.xml.xsql.XSQLServlet in Java Web Server 2.0

    Does anyone know how to add the oracle.xml.xsql.XSQLServlet in the Java Web Srever 2.0? When running the helloworld.xsql I am now getting the following error message.
    "500 Internal Server Error
    The servlet named oracle.xml.xsql.XSQLServlet at the requested URL
    http://nw601250:8080/xsql/demo/helloworld.xsql
    reported this exception: java.security.AccessControlException: access denied (java.io.FilePermission C:\JavaWebServer2.0\public_html\xsql\demo\helloworld.xsql read). Please report this to the administrator of the web server.
    java.lang.RuntimeException: java.security.AccessControlException: access denied (java.io.FilePermission C:\JavaWebServer2.0\public_html\xsql\demo\helloworld.xsql read) at oracle.xml.xsql.XSQLPageManager.getPage(XSQLPageManager.java:122) at oracle.xml.xsql.XSQLPageProcessor.process(XSQLPageProcessor.java, Compiled Code) at oracle.xml.xsql.XSQLServlet.doGet(XSQLServlet.java:124) at javax.servlet.http.HttpServlet.service(HttpServlet.java:715) at javax.servlet.http.HttpServlet.service(HttpServlet.java:840) at com.sun.server.ServletState.callService(ServletState.java:226) at com.sun.server.ServletManager.callServletService(ServletManager.java:936) at com.sun.server.ProcessingState.invokeTargetServlet(ProcessingState.java:423) at com.sun.server.http.HttpProcessingState.execute(HttpProcessingState.java:79) at com.sun.server.http.stages.Runner.process(Runner.java:79) at com.sun.server.ProcessingSupport.process(ProcessingSupport.java, Compiled Code) at com.sun.server.Service.process(Service.java:204) at com.sun.server.http.HttpServiceHandler.handleRequest(HttpServiceHandler.java:374) at com.sun.server.http.HttpServiceHandler.handleRequest(HttpServiceHandler.java:166) at com.sun.server.HandlerThread.run(HandlerThread.java:162)"
    I have the alias *.xsql set to map to the servlet named oracle.xml.xsql.XSQLServlet under the Servlet Aliases section, but I'm not sure how to add the servlet under the Servlet section, as I'm guessing that this is the problem I'm now experiencing. I tried adding oracle.xml.xsql.XSQLServlet as both the servlet name and class, but this is not working.
    Any help would be greatly appreciated. Thanks!

    Rani,
    The following is part of a message that was posted back on Nov. 7 of '99 from Steve Muench. I just followed this exactly with the Java Web Server 1.0.1 and it worked fine (including adding the classpath settings and xsql servlet mappings as it says below). Thanks,Dan
    Here's the steps I just followed to run all the XSQL Demos under JSWDK 1.0.1
    (1) Downloaded jswdk1_0_1-win.zip from Sun
    (2) Installed in D:\jswdk-1.0.1
    (3) Edited "startserver.bat" to add the
    classpath entries needed by XSQL Servlet:
    set CLASSPATH=%CLASSPATH%;d:\xsql\lib
    set CLASSPATH=%CLASSPATH%;d:\xsql\lib\classes111.zip
    set CLASSPATH=%CLASSPATH%;d:\xsql\lib\oraclexsql.jar
    set CLASSPATH=%CLASSPATH%;d:\xsql\lib\oraclexmlsql.jar
    set CLASSPATH=%CLASSPATH%;d:\xsql\lib\xmlparserv2.jar
    (4)Edited d:/jswdk-1.0.1/webpages/WEB-INF/servlets.properties and added the line:
    xsql.code=oracle.xml.xsql.XSQLServlet
    (5) Edited d:/jswdk-1.0.1/webpages/WEB-INF/mappings.properties
    and added the line:
    .xsql=xsql
    (6) Copied D:\xsql\demo to D:/jswdk-1.0.1/webpages/xsql/demo
    (7) Started the Webserver with "startserver.bat"
    (8) Browsed http://localhost:8080/xsql/demo/index.html
    (9) Exercised all the demos.
    Hope this helps.
    Steve Muench
    Oracle XML Team

  • How to use Java Action in fault policy

    Hi ,
    I want to execute custom java Action as fault handler in fault-policy implemntation. I have done but it is not working. I am putting code for fault-policies.xml and also java Action class.
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <faultPolicy version="0.0.1" id="FusionMidFaults"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Conditions>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:remoteFault">
    <condition>
         <test>$fault.code="MYCODE"</test>
    <action ref="ora-java"/>
    </condition>
    </faultName>
    * <faultName>
    <condition>
    <action ref="ora-java"/>
    </condition>
    </faultName>
    </Conditions>
    <Action id="ora-java">
    <JavaAction ClassName="JavaPolicy.TestJavaAction"
    defaultAction="ora-human-intervention" >
    <ReturnValue value="ABORT" ref="ora-terminate"/>
    <ReturnValue value="MANUAL" ref="ora-human-intervention"/>
    </JavaAction> *
    </Action>
    <Actions>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    2. Java class in JavaPolicy package
    package JavaPolicy;
    import com.collaxa.cube.engine.fp.BPELFaultRecoveryContextImpl;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryContext;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryJavaClass;
    public class TestJavaAction implements IFaultRecoveryJavaClass {
    public void handleRetrySuccess(IFaultRecoveryContext ctx) {
    System.out.println("This is for retry success");
    handleFault(ctx);
    public String handleFault(IFaultRecoveryContext ctx) {
    System.out.println("-----Inside handleFault-----\n" +
    ctx.toString());
    BPELFaultRecoveryContextImpl bpelCtx =
    (BPELFaultRecoveryContextImpl)ctx;
    bpelCtx.addAuditTrailEntry("hi there");
    System.out.println("Policy Id" + ctx.getPolicyId());
    return "MANUAL";
    I have kept the java file in 'AExpPrj\src\JavaPolicy' where AExpPrj is my project Name.
    Where I am doing mistake, I could not find. Is there any link including complete example of Java Action in fault policies.
    Thanks & Regards
    Yogendra Rishishwar
    9867927087

    A bean is obtain by <jsp:useBean> tag nd once bean is obtained we can get its property by using getProperty tag.

  • Using Sun Java Web Server 2.0 for XSQL

    In the documentation for XSQL, a number of Java Web servers are described but not Sun java web server. I need to know the configuration for Sun java web server 2.0 for running XSQL.
    null

    This is not enough information to be useful.

Maybe you are looking for

  • System unstable and requires reboot after 24 hours - HELP

    I did a clean install of Leopard twice and the same issue appears. The system becomes unstable and requires a reboot. Mail doesn't function correctly and Firefox gives an error, "Another copy of Firefox is running. Only one copy can run at a time'. T

  • ExecSQL throws NullPointerException in large jobs (Oracle)

    I'm processing a loop with execSQL calls on a Oracle database. My program works fine, but after 15 minutes (= about 90 loops) it always terminates with a NullPointerException from the execSQL call. Is there any time-out for the database connection ?

  • Read file without knowing full name

    Dear All, I want to read data from a file but without knowing the file's full name. For example i have data files from a program that the first letters of the data files are the date and the rest some numbers i cannot predict i.e 20081027_5323621. Is

  • Workflow in the BAckground

    i have a custom workflow which throws a form and when "Launch" button is hit it starts executing. This gives you a result page which is populated as the workflows process occurs. I need to do something similar to the "Launch bulk Actions" in the acco

  • Repair request Delivery processing Error

    I am having diffculites processing a repair request to delivery 'Order cannot be delivered (see long text)' ( driectly from VA01) But in vl01n when i add the delivery type LR it works good. Thanks.