Classpath incomplete, when using IUser

Hi
I receive the following error in eclipse:
"The project was not built since its classpath is incomplete. Cannot find the class file for com.sapportals.portal.security.usermanagement.IUser. Fix the classpath then try rebuilding this project."
It occurs when i used IUser, I have already included the jar "com.sap.security.api.jar" into the path.
Thanks for any reply.

Hi Roberto,
wcm_XXX_api.jar is valid for EP 5.0, in EP 6.0 and NW04 you have to apply the following pattern on the jars:
km*_api.jar -> KM Application
bc.*_api.jar -> Repository Framework
coll*_api.jar -> Collaboration
Best regards,
Thilo

Similar Messages

  • Questions flagged as Incomplete when using rdcmndGotoSlide

    Hello!
    I'm  working in a Captivate 4 project. I wanted to do a non-linear module,  so it contains a menu in Slide 2 with some flash animations acting as  buttons.
    Each of the buttons are using rdcmndGotoSlide to go to the appropriate slide, but this is causing a strange issue.
    It seems that once I go back to the menu after answering some quiz questions, all the rest of questions are flagged as incomplete (not letting the user answer the question)
    What could be the issue here?

    Hello,
    I think you did get out of the 'Quiz range' if you see this behavior. This range starts with the slide containing the first scored object (can be a Question slide or an interactive object like a button, click box, TEB) and ends with the Score slide (that is why this last is mostly put at the end of the project). With your branching did you go to a slide before the first scored 'thing'? If yes, as a workaround attach a score (perhaps 1 pt) to an interactive object in a slide before this branching point.
    Lilybiri

  • Why does captivate 5 scorm 2004 change the pass/fail status when using complete/incomplete

    SUMMARY:  I am trying to use SCORM 2004 reporting but I am finding out ADOBE does not diffentiate between COMPLETE/INCOMPLETED and PASSED/FAILED variables in the SCORM 2004.
    RESULT: I can not accurately get the passing/failing status from the course.
    QUESTION: Is their anything I can do or does ADOBE have a patch they have release which will accurately report the passed/failed STATUS as well as the completed/incompleted status.
    OTHER RESEARCH: I even attempted to post these "proofs" on scorm.com and they have something called "SATISFACTION TRACKED" to accomodate content creation systems (CAPTIVATE 5) which does not follow the standards of SCORM 2004.
    BACKGROUND:  the report status "Incomplete/Complete" and "Pass/Fail" under the publishing options for SCORM 2004 essentially mean the same thing when the CAPTIVATE COURSE sends setvar commands to the SCORM API...  In other words the SCORM API receives the same exact commands when publishing in both modes.  "THIS IS WRONG"
    why is the wrong?  IF REPORTING; incomplete/complete ;  the CAPTIVATE 5 COURSE SHOULD NOT "change" the STATUS OF PASS/FAIL when attempting to report COMPLETE/INCOMLETE with 100% slide views.
    DEMO #3> SHOWS THE PROBLEM
    About DEMO #1 and DEMO #2> these are other reporting options I attempted with other problems arrising..so these images are just for supporting my original problem which is shown in DEMO #3...
    DEMO 1 (REPORT STATUS has no affect on reporting):SETTINGS:
    PASS: (PROBLEM)
    Anything above Passing Score is not recorded to LMS (once passing is reached...no more bookmarks are recorded)
    FAIL: (CORRECT)
    Failure gets sent to the database on the last screen with "completed"
    DEMO 2 (Report status  [Complete/Incomplete  Pass/Fail]   has no impact on commands sent to scorm api):
    SETTINGS:
    PASS: (CORRECT)
    Very Last page gets sent to the Database
    FAIL: (PROBLEM)
    NOTHING GETS SENT TO DATABASE (stuck in final score screen forever)...because it says "INCOMPLETE"
    DEMO 3:
    Report status [Complete/Incomplete Pass/Fail] has no impact on commands sent to scorm api
    SETTINGS:
    PASS: (CORRECT)
    Very Last page gets sent to the Database with a 90% passing with "completed"
    FAIL: (PROBLEM)
    LAST SLIDE SENDS "completed" but GETS SENT AS A PASSING SCORE??? even when it is a failure
    (IN OTHER WORDS ADOBE CHANGES THE PASS/FAIL STATUS based on slide views...
    this is WRONG ....REALLY WRONG becuase I am trying to report
    "COMPLETE/INCOMPLETE" for 100% slide views
    PASS/FAIL OPTIONS:
    OPTION I CAN PURSUE?
    SO WHAT CAN I DO?  YES, I CAN TELL THE LMS...to COMPARE THE SCORE RECEIVED DURING A "COMPLETE" status...and then change the grade in the LMS based on the SCORE IN THE LMS...BUT THAT WOULD MEAN THE LMS COULD REPORT ONE GRADE and the COURSE COULD REPORT A DIFFERENT GRADE....and that would not be good.
    ALL OF OUR COURSES SHOW THE STUDENT THE FINAL SCORE WITHIN EACH COURSE..
    QUESTION TO ADOBE?
    SO ADOBE when are you going to differentiate these two reporting options so that the PASS/FAIL OPTIONS ARE ACCURATELY REPORTED WHEN USING COMPLETE/INCOMPLETE?
    MORE INFORMATION
    HERE IS THE SCORM.COM "Satisfaction" adjustment (very last line) to accomodate inconsistent reporting in CAPTIVATE 5.
    Thanks,
    DOUG LUBEY OF LOUISIANA
    www.douglubey.com
    OTHER WEBSITES:
    http://forums.adobe.com/message/3332035
    http://forums.adobe.com/message/3122315
    http://forums.adobe.com/thread/712502?start=50&tstart=0
    http://forums.adobe.com/thread/800570
    http://forums.adobe.com/thread/720121
    SEARCH ENGINE REFERENCE:
    CAPTIVATE SCORM SUCCESS_STATUS
    captivate 5 scorm 2004 pass/fail is dependent on complete/incomplete
    scorm 2004 captivate cs5 success_status incorrect
    scorm 2004 captivate cs5 reports success_status incorrectly
    scorm 2004 captivate incorrectly reports pass/fail
    scorm 2004 captivate 5 incorrectly reports pass/fail
    scorm 2004 "captivate 5" incorrectly reports pass/fail
    captivate 5 sends a pass even when a failure is issued by the course using scorm 2004.
    captivate does not work properly when working with completed status.
    CAPTIVATE SCORM SUCCESS_STATUS COMPLETE STATUS SHOULD BE INDEPENDENT
    CAPTIvATE 5 cmi.completion_status
    and cmi.success_status does not work independently with scorm 2004.  they both share the same definition.  These two field were designed to help differentiate the difference between a passing or failing score and when the course is actually completed.   WITH CAPTIVATE 5 they do not differentiate the two.  COMPLETE means PASS and INCOMPLETE means fail..
    I was trying to use "completion_status" as a way to determine when all slides were shown.  So that I can send the final score (PASS/FAIL) the LMS after all slides were viewed and this was the absoluted score the student recieved.
    2011 CAPTIVATE CHANGES cmi.success_status TO PASSING WHEN COURSE REPORTS FAILURE
    2010 CAPTIVATE CHANGES SUCCESS TO PASSED WHEN COURSE REPORTS FAILURE
    CAPTIVATE 5 CHANGES cmi.success_status TO PASSING
    CAPTIVATE 5 CHANGES cmi.success_status TO PASSING WHEN COURSE REPORTS FAILURE
    CPTX CAPTIVATE CHANGES cmi.success_status TO PASSING
    CP5 WHY DOES CAPTIVATE SCORM SUCCESS_STATUS
    CPTX WHY DOES CAPTIVATE CHANGE PASSING STATUS
    CPTX CAPTIVATE SCORM CHANGES FAILING SCORE TO PASSING SCORE
    CAPTIVATE SCORM SUCCESS_STATUS COMPLETE STATUS MEANS THE SAME THING
    CAPTIVATE SCORM SUCCESS_STATUS COMPLETE STATUS SHOULD BE INDEPENDENT

    Hi,
    Here's something I found in a similar situation... hope this helps!
    After publishing your CP5 project as a SCORM 2004 zip file, unzip the file so you can get into the separate files.  Open the imsmanifest.xml file with a text editor; I like using Notepad++.  Search for the line starting with <imsss:minNormalizedMeasure>.  The complete line will probably look like <imss:minNormalizedMeasure></imss:minNormalizedMeasure>, this is the line that is supposed to contain your passing score (at least for our LMS).  So, if your passing score is supposed to be 80%, edit this line to be:  <imsss:minNormalizedMeasure>0.80</imsss:minNormalizedMeasure> and save the file.  Then select all the files and re-zip them, I use 7-zip for that.
    I found one other weird thing that doesn't happen 100% of the time, so test it.  In the example above, try to get a score of exactly 80% (or whatever passing grade you are using) and see if you get the correct status reported.  I found I sometimes have to re-edit that line in the manifest file to be 0.79 so it correctly includes an exact 80% score.  No idea why and you have to watch the number of questions in your quiz to make sure that works for you mathematically.
    If this works or not, I'd recommend posting your results so others can get some ideas.  Good Luck!!

  • Error message when using xrpcc in JWSDP 1_0_01

    Dear all,
    I've got the following error message when using xrpcc of JWSDP 1_0_01 for my config.xml file.
    D:\jwsdp-1_0_01\Message>xrpcc -classpath build -both -d build config.xml
    error: invalid element "{http://java.sun.com/jax-rpc-ri/xrpcc-config}configurati
    on" in configuration file (line 2)
    The content of 'config.xml' is shown as follows.
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration xmlns="http://java.sun.com/jax-rpc-ri/xrpcc-config">
    <rmi name="MessageService"
    targetNamespace="http://messageuri.com/wsdl"
    typeNamespace="http://messageuri/types">
    <service name="MyMessage" packageName="Message">
    <interface name="Message.MessageIF"
    servantName="Message.MessageImpl"/>
    </service>
    </rmi>
    </configuration>
    Thank you for your kind attention!
    Regards,
    Eddie

    Thanks all! I've already solved my previous problem, however, i got another one now.
    =========================================================
    error: unknown model info in configuration file (line 5)
    =========================================================
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
    <rmi name="MessageService"
    targetNamespace="http://messageuri.com/wsdl"
    typeNamespace="http://messageuri.com/types">
    <service name="MyMessage" packageName="Message">
    <interface name="Message.MessageIF"
    servantName="Message.MessageImpl" />
    </service>
    </rmi>
    </configuration>
    Thanks,
    Eddie

  • Best practice when using Tangosol with an app server

    Hi,
    I'm wondering what is the best practice when using Tangosol with an app server (Websphere 6.1 in this case). I've been able to set it up using the resource adapter, tried using distributed transactions and it appears to work as expected - I've also been able to see cache data from another app server instance.
    However, it appears that cache data vanishes after a while. I've not yet been able to put my finger on when, but garbage collection is a possibility I've come to suspect.
    Data in the cache survives the removal of the EJB, but somewhere later down the line it appear to vanish. I'm not aware of any expiry settings for the cache that would explain this (to the best of my understanding the default is "no expiry"), so GC came to mind. Would this be the explanation?
    If that would be the explanation, what would be a better way to keep the cache from being subject to GC - to have a "startup class" in the app server that holds on to the cache object, or would there be other ways? Currently the EJB calls getCacheAdapter, so I guess Bad Things may happen when the EJB is removed...
    Best regards,
    /Per

    Hi Gene,
    I found the configuration file embedded in coherence.jar. Am I supposed to replace it and re-package coherence.jar?
    If I put it elsewhere (in the "classpath") - is there a way I can be sure that it has been found by Coherence (like a message in the standard output stream)? My experience with Websphere is that "classpath" is a rather ...vague concept, we use the J2CA adapter which most probably has a different class loader than the EAR that contains the EJB, and I would rather avoid to do a lot of trial/error corrections to a file just to find that it's not actually been used.
    Anyway, at this stage my tests are still focused on distributed transactions/2PC/commit/rollback/recovery, and we're nowhere near 10,000 objects. As a matter of fact, we haven't had more than 1024 objects in these app servers. In the typical scenario where I've seen objects "fade away", there has been only one or two objects in the test data. And they both disappear...
    Still confused,
    /Per

  • Errors when using source2wsdd

    Any help will be greatly appreciated.
    I got the following errors when using the ant task source2wsdd:
    [source2wsdd] classpath C:\bea\weblogic81\server\lib\weblogic.jar;C:\bea\weblogi
    c81\server\lib\webservices.jar
    [source2wsdd] source2wsdd: Cannot find doclet class weblogic.webservice.tools.dd
    gen.ServiceGen
    [source2wsdd] 1 error
    [ant] Exiting C:\project\DCII\ant\batch-build.xml.
    BUILD FAILED
    C:\project\ant\build.xml:67: The following error occurred while executing this l
    ine:
    C:\project\DCII\ant\batch-build.xml:326: javadoc execution failed
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(Projec
    tHelper.java:539)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:388)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.Target.performTasks(Target.java:369)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1062)
    at org.apache.tools.ant.Main.runBuild(Main.java:673)
    at org.apache.tools.ant.Main.startAnt(Main.java:188)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55)
    Caused by: C:\project\DCII\ant\batch-build.xml:326: javadoc execution failed
    at weblogic.ant.taskdefs.webservices.autotype.JavaSource2DD.runJavadoc(J
    avaSource2DD.java:297)
    at weblogic.ant.taskdefs.webservices.autotype.JavaSource2DD.execute(Java
    Source2DD.java:150)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.Target.performTasks(Target.java:369)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
    at ise.antelope.tasks.Call.execute(Call.java:17)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at ise.antelope.tasks.IfTask.doIf(IfTask.java:298)
    at ise.antelope.tasks.IfTask.execute(IfTask.java:267)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.Target.performTasks(Target.java:369)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386)
    ... 10 more
    --- Nested Exception ---
    C:\project\DCII\ant\batch-build.xml:326: javadoc execution failed
    at weblogic.ant.taskdefs.webservices.autotype.JavaSource2DD.runJavadoc(J
    avaSource2DD.java:297)
    at weblogic.ant.taskdefs.webservices.autotype.JavaSource2DD.execute(Java
    Source2DD.java:150)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.Target.performTasks(Target.java:369)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
    at ise.antelope.tasks.Call.execute(Call.java:17)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at ise.antelope.tasks.IfTask.doIf(IfTask.java:298)
    at ise.antelope.tasks.IfTask.execute(IfTask.java:267)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.Target.performTasks(Target.java:369)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.Target.performTasks(Target.java:369)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1062)
    at org.apache.tools.ant.Main.runBuild(Main.java:673)
    at org.apache.tools.ant.Main.startAnt(Main.java:188)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55)
    Total time: 8 seconds
    The following is the major parts from my ant build file:
    <path id="webservice.classpath">
    <pathelement location="${wls.home.dir}/server/lib/weblogic.jar"/>
    <pathelement location="${wls.home.dir}/server/lib/webservices.jar"/>
    </path>
    <target name = "initialize">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${class.dir}"/>
    <mkdir dir="${dist.dir}/${deploy.env}"/>
    <mkdir dir="${jdocs.dir}"/>
    <mkdir dir="${weblogic.application.dir}"/>
    <taskdef name="call"
    classpathref="antelope.classpath"
    classname="ise.antelope.tasks.Call"/>
    <taskdef name="if"
    classpathref="antelope.classpath"
    classname="ise.antelope.tasks.IfTask"/>
    <taskdef name="servicegen"
    classpathref="webservice.classpath"
    classname="weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask"/>
    <taskdef name="clientgen"
    classpathref="webservice.classpath"
    classname="weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask"/>
    <taskdef name="source2wsdd"
    classpathref="webservice.classpath"
    classname="weblogic.ant.taskdefs.webservices.autotype.JavaSource2DD"/>
    <taskdef name="wldeploy"
    classpathref="webservice.classpath"
    classname="weblogic.ant.taskdefs.management.WLDeploy"/>
    </target>
    <target name="buildEar"
    depends="buildCommonJar, ejbc">
    <echo message ="[${module.name}] Checking to see if ${ear.file} is up to date...[${appc.classpath}]" />
    <source2wsdd
    javaSource="${webserviceServer_src_dir}/HelloWorld.java"
    ddFile="${descriptor.dir}/webservice/web-services.xml"
    serviceUri="/HelloWorld">
    <classpath refid="webservice.classpath" />
    </source2wsdd>
    <echo message ="[Done with buildEar]" />
    </target>

    Did you ever resolve this?

  • Error when using Oracle Migration WorkBench (Sql Server 2k to Oracle 8i)

    I'm trying to migrate a Sql Server 2k database to an Oracle 8i schema using OMWB. After using BCP to collect metadata information on the source database, I tried to capture the source data model and got a "Capture aborted" message on the progress screen (even though then it appears a dialog window reporting "0 errors and 0 warnings", funny!). Down there is the error log OMWB generated. After reading some posts, I changed some columns of the OMWB dictionary that holds the source database name, but still got the same error. If someone can enlighten me on this toppic, I'd greatly appreciated it.
    Here's the error log of OMWB:
    ** Oracle Migration Workbench
    ** Production
    ** ( Build 20050629 )
    ** OMWB_HOME: D:\Datos\Download\Oracle\Oracle Migration Workbench\omwb
    ** user language: es
    ** user region: null
    ** user timezone:
    ** file encoding: Cp1252
    ** java version: 1.4.2_04
    ** java vendor: Sun Microsystems Inc.
    ** o.s. arch: x86
    ** o.s. name: Windows 2000
    ** o.s. version: 5.0
    ** Classpath:
    ..\lib\boot.jar
    ** Started : Fri Feb 23 17:18:48 GMT-03:00 2007
    ** Workbench Repository : Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.6.0.0 - Production
    Repository Connection URL: jdbc:oracle:thin:@ServerCms:1521:sigcewbc
    ** The following plugins are installed:
    ** Microsoft Access 2.0/95/97/2000/2002/2003 Plugin, Production Release 10.1.0.4.0
    ** Microsoft SQLServer 2000 Plugin, Production Release 10.1.0.4.0
    ** Microsoft SQLServer 6.5 Plugin, Production Release 10.1.0.4.0
    ** Microsoft SQLServer 7.0 Plugin, Production Release 10.1.0.4.0
    ** Active Plugin : SQLServer2K
    EXCEPTION :SQLServer2KDisconnSourceModelLoad.loadSourceModel(): oracle.mtg.migration.MigrationStopException: java.lang.IndexOutOfBoundsException: Index: 15, Size: 15
    ** Shutdown : Fri Feb 23 18:00:50 GMT-03:00 2007

    Duplicate thread
    Error when using Oracle Migration WorkBench (Sql Server 2k to Oracle 8i)

  • Jax-ws 2.2.8 and ws-addressing: Client throwing java.lang.NullPointerException on receipt of HTTP 202 when using non-anonymous ReplyTo address

    Server: JBoss EAP 6.2.0
    Client: JDK 1.7.0_51 x64
    JAX-WS: RI 2.2.8 ( via -Djava.endorsed.dirs )
    I am getting a java.lang.NullPointerException when calling the operation on the WS endpoint from the client when using non-anonymous replyTo address.
    I have simplified the scenario into a small test case that hopefully others can replicate. Since the exception is happening on the client instead of the server, I would think that the container used is irrelevant, but I have specified it nonetheless.
    1) WebService:
    package test.webservice;
    import java.util.Random;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.xml.ws.soap.Addressing;
    @WebService(targetNamespace="http://services.nowhere.org/")
    @Addressing(required=true)
    @SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
    public class RandomTest {
        @WebMethod
        public long nextRandom(@WebParam boolean forceException) throws Exception {
            if( forceException ) {
                throw new Exception("Some exception");
            Random rand = new Random();
            return rand.nextLong();
    2) Generated WSDL by JBossEAP 6.2.2:
    <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:tns="http://webservice.test/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="RandomTestService" targetNamespace="http://webservice.test/">
      <wsdl:types>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservice.test/" elementFormDefault="unqualified" targetNamespace="http://webservice.test/" version="1.0">
      <xs:element name="nextRandom" type="tns:nextRandom"/>
      <xs:element name="nextRandomResponse" type="tns:nextRandomResponse"/>
      <xs:complexType name="nextRandom">
        <xs:sequence/>
      </xs:complexType>
      <xs:complexType name="nextRandomResponse">
        <xs:sequence>
          <xs:element name="return" type="xs:long"/>
        </xs:sequence>
      </xs:complexType>
    </xs:schema>
      </wsdl:types>
      <wsdl:message name="nextRandom">
        <wsdl:part element="tns:nextRandom" name="parameters">
        </wsdl:part>
      </wsdl:message>
      <wsdl:message name="nextRandomResponse">
        <wsdl:part element="tns:nextRandomResponse" name="parameters">
        </wsdl:part>
      </wsdl:message>
      <wsdl:portType name="RandomTest">
        <wsdl:operation name="nextRandom">
          <wsdl:input message="tns:nextRandom" name="nextRandom" wsam:Action="http://webservice.test/RandomTest/nextRandomRequest" wsaw:Action="http://webservice.test/RandomTest/nextRandomRequest">
        </wsdl:input>
          <wsdl:output message="tns:nextRandomResponse" name="nextRandomResponse" wsam:Action="http://webservice.test/RandomTest/nextRandomResponse" wsaw:Action="http://webservice.test/RandomTest/nextRandomResponse">
        </wsdl:output>
        </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="RandomTestServiceSoapBinding" type="tns:RandomTest">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsaw:UsingAddressing wsdl:required="true"/>
        <wsp:PolicyReference URI="#RandomTestServiceSoapBinding_WSAM_Addressing_Policy"/>
        <wsdl:operation name="nextRandom">
          <soap:operation soapAction="" style="document"/>
          <wsdl:input name="nextRandom">
            <soap:body use="literal"/>
          </wsdl:input>
          <wsdl:output name="nextRandomResponse">
            <soap:body use="literal"/>
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="RandomTestService">
        <wsdl:port binding="tns:RandomTestServiceSoapBinding" name="RandomTestPort">
          <soap:address location="http://localhost:8080/servertest/RandomTest"/>
        </wsdl:port>
      </wsdl:service>
        <wsp:Policy xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="RandomTestServiceSoapBinding_WSAM_Addressing_Policy"><wsam:Addressing><wsp:Policy/></wsam:Addressing></wsp:Policy>
    </wsdl:definitions>
    3) ant build.xml to generate the client code from WSDL
    <?xml version="1.0" encoding="UTF-8"?>
    <project default="build" basedir="..">
        <property name="jaxws.classpath" location="C://jaxws-2.2.8/jaxws-ri/lib/*.jar"/>
        <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
               <classpath path="${jaxws.classpath}"/>
        </taskdef>
        <target name="build" >
            <!-- For these to work, the JAR files in tools/jaxws-ri must be included in Ant's classpath -->
            <wsimport wsdl="http://localhost:8080/servertest/RandomTest?wsdl"
                   verbose="true"
                   sourcedestdir="src"
                   destdir="bin"
                   keep="true">
                   <xjcarg value="-enableIntrospection"/>
            </wsimport>
        </target>
    </project>
    4) Client code
    4a) ClientTest.java - Actual client run from client
    package test.wsclient;
    import java.util.ArrayList;
    import java.util.List;
    import javax.xml.ws.BindingProvider;
    import javax.xml.ws.Endpoint;
    import javax.xml.ws.handler.Handler;
    import javax.xml.ws.soap.AddressingFeature;
    import org.nowhere.services.RandomTest;
    import org.nowhere.services.RandomTestService;
    public class ClientTest {
        public static void main(String args[]) throws Exception {
            ClientTest app = new ClientTest();
            app.testAddressing();
        public void testAddressing() throws Exception {
            String REPLY_TO_ADDRESS = "http://localhost:8082/servertest/RandomCallback";
            String FAULT_TO_ADDRESS = "http://localhost:8082/servertest/RandomCallbackFault";
            RandomTestService service = new RandomTestService();
            RandomTest port = service.getRandomTestPort(new AddressingFeature());
            BindingProvider provider = (BindingProvider) port;
            // pass the replyTo address to the handler
            provider.getRequestContext().put("ReplyTo", REPLY_TO_ADDRESS);
            provider.getRequestContext().put("FaultTo", FAULT_TO_ADDRESS);
            // Register handlers to set the ReplyTo and FaultTo on the SOAP request sent to the WS endpoint
            List<Handler> handlerChain = new ArrayList<Handler>();
            handlerChain.add(new ClientHandler());
            provider.getBinding().setHandlerChain(handlerChain);
            // Start endpoint to receive callbacks from WS
            Endpoint endpoint = Endpoint.publish(REPLY_TO_ADDRESS, new CallbackSEI());
            try {
                port.nextRandom(false);
            } catch( Exception ex ) {
                ex.printStackTrace();
            } finally {
                Thread.sleep(10000);
            endpoint.stop();
            System.exit(0);
    4b) ClientHandler.java - Used to set the wsa ReplyTo address and FaultTo address when sending SOAP request from client to server
    package test.wsclient;
    import java.util.Set;
    import javax.xml.namespace.QName;
    import javax.xml.soap.SOAPEnvelope;
    import javax.xml.soap.SOAPHeader;
    import javax.xml.ws.handler.MessageContext;
    import javax.xml.ws.handler.MessageContext.Scope;
    import javax.xml.ws.handler.soap.SOAPHandler;
    import javax.xml.ws.handler.soap.SOAPMessageContext;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    public class ClientHandler implements SOAPHandler<SOAPMessageContext> {
        public ClientHandler() {};
        @Override
        public Set<QName> getHeaders() {
            return null;
        @Override
        public void close(MessageContext arg0) {
        @Override
        public boolean handleFault(SOAPMessageContext context) {
            return true;
        protected void setAnAddress(SOAPHeader header, String tagName, String address) {
            NodeList nodeListReplyTo = header.getElementsByTagName(tagName);
            NodeList nodeListAddress = nodeListReplyTo.item(0).getChildNodes();
            for (int i = 0; i < nodeListAddress.getLength(); i++) {
                Node node = nodeListAddress.item(i);
                if ("Address".equals(node.getLocalName())) {
                    node.setTextContent(address);
                    break;
        protected String getMessageID(SOAPHeader header) {
            NodeList nodeListMessageId = header.getElementsByTagName("MessageID");
            return nodeListMessageId.item(0).getTextContent();
        @Override
        public boolean handleMessage(SOAPMessageContext context) {
            Boolean isOutbound = (Boolean) context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY);
            if (isOutbound) {
                try {
                    SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
                    SOAPHeader header = envelope.getHeader();
                    /* extract the generated MessageID */
                    String messageID = getMessageID(header);
                    context.put("MessageID", messageID);
                    context.setScope("MessageID", Scope.APPLICATION);
                    /* change ReplyTo address */
                    setAnAddress(header, "ReplyTo", (String) context.get("ReplyTo"));
                    setAnAddress(header, "FaultTo", (String) context.get("FaultTo"));
                } catch (Exception ex) {
                    throw new RuntimeException(ex);
            return true;
    4c) CallbackSEI.java - endpoint on the client for server to send the SOAP response back to the client
    package test.wsclient;
    import javax.annotation.Resource;
    import javax.jws.Oneway;
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.xml.ws.Action;
    import javax.xml.ws.RequestWrapper;
    import javax.xml.ws.WebServiceContext;
    import javax.xml.ws.soap.Addressing;
    @WebService
    @Addressing
    //@HandlerChain(file = "/handler-chain.xml")
    public class CallbackSEI {
        @Resource
        private WebServiceContext context;
         * If there is no namespace specified in the method below, then the CallbackSEI needs to be in the same package as the
         * WS endpoint.
        @Oneway
        @Action(input="http://services.nowhere.org/RandomTest/nextRandomResponse")
        @RequestWrapper(localName="nextRandomResponse", targetNamespace="http://services.nowhere.org/")
        public void handleNotification(@WebParam(name="return")long random) {
            System.out.println("Asynch response received");
            System.out.println( random );
            //System.out.println("This response relates to the message ID: "+ getMessageID());
    In summary:
    Server is listening on port 8080
    Client will listen in port 8082 for the callback from the server for the SOAP response
    Now when I run the client, I see that the proper behaviour as far as ws-addressing is concerned. That is:
    client  -- SOAP request ( on port 8080 ) --> server
    client <-- HTTP 202 ( empty HTTP body )  --- server
    client <-- SOAP response ( on port 8082 )  --- server
    All well and good, except that I am getting a NullPointerException on the client side when I call the operation.
    With debugging of the SOAP request and responses, I get the following output:
    ---[HTTP request - http://localhost:8080/servertest/RandomTest]---
    Accept: text/xml, multipart/related
    Content-Type: text/xml; charset=utf-8
    SOAPAction: "http://services.nowhere.org/RandomTest/nextRandomRequest"
    User-Agent: JAX-WS RI 2.2.8 svn-revision#13980
    <?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><S:Header><To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:8080/servertest/RandomTest</To><Action xmlns="http://www.w3.org/2005/08/addressing">http://services.nowhere.org/RandomTest/nextRandomRequest</Action><ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
        <Address>http://localhost:8082/servertest/RandomCallback</Address>
    </ReplyTo><FaultTo xmlns="http://www.w3.org/2005/08/addressing">
        <Address>http://localhost:8082/servertest/RandomCallbackFault</Address>
    </FaultTo><MessageID xmlns="http://www.w3.org/2005/08/addressing">uuid:bcd2f6ef-3034-49e8-b837-dbd6a772fb93</MessageID></S:Header><S:Body><ns2:nextRandom xmlns:ns2="http://services.nowhere.org/"><arg0>false</arg0></ns2:nextRandom></S:Body></S:Envelope>--------------------
    ---[HTTP response - http://localhost:8080/servertest/RandomTest - 202]---
    null: HTTP/1.1 202 Accepted
    Content-Length: 0
    Content-Type: text/xml;charset=UTF-8
    Date: Fri, 18 Jul 2014 08:34:36 GMT
    Server: Apache-Coyote/1.1
    java.lang.NullPointerException
        at com.sun.proxy.$Proxy38.nextRandom(Unknown Source)
        at test.wsclient.ClientTest.testAddressing(ClientTest.java:43)
        at test.wsclient.ClientTest.main(ClientTest.java:18)
    ---[HTTP request]---
    Cache-control: no-cache
    Host: localhost:8082
    Content-type: text/xml; charset=UTF-8
    Content-length: 704
    Connection: keep-alive
    Pragma: no-cache
    User-agent: Apache CXF 2.7.7.redhat-1
    Accept: */*
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><Action xmlns="http://www.w3.org/2005/08/addressing">http://services.nowhere.org/RandomTest/nextRandomResponse</Action><MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:65d8d7fc-09e4-494a-a9c5-0a01faf4d7e6</MessageID><To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:8082/servertest/RandomCallback</To><RelatesTo xmlns="http://www.w3.org/2005/08/addressing">uuid:bcd2f6ef-3034-49e8-b837-dbd6a772fb93</RelatesTo></soap:Header><soap:Body><ns2:nextRandomResponse xmlns:ns2="http://services.nowhere.org/"><return>2870062781194370669</return></ns2:nextRandomResponse></soap:Body></soap:Envelope>--------------------
    Asynch response received
    2870062781194370669
    As you can see from the output above, the proxy is throwing an Exception when it receives the HTTP 202 response.
    Any ideas ?

    I think I have found when I get this error and probably I have found a bug. I will appreciate if someone can confirm this.
    In my BPEL project setup, my BPEL process's wsdl file imports another wsdl from different namespace. Here is sample snippet -
    <wsdl:definitions targetNamespace="http://namespace/1">
    <wsdl:import namespace="http://namespace/2" location="resources/another.wsdl"/>
    <plnk:partnerLinkType....../>
    </wsdl:definitions>
    Please let me know. I checked the bundled samples with Oracle BPEL PM and did not find any similar case where process wsdl imports another wsdl.
    Thank you.
    Meghana

  • Bulk Collect into is storing less no of rows in collection when using LIMIT?

    I have written the following anonymous PL SQL Block. However, the line dbms_output.put_line(total_tckt_col.LAST) gives me output as 366 (in DBMS_OUTPUT is SQL Developer) which is correct when no limit is set. If the limit is set to 100 in the FETCH statement then dbms_output.put_line(total_tckt_col.LAST) gives me 66. What I am doing wrong here?
    DECLARE
       CURSOR cur_total_tckt 
       is
       select  t.ticket_id ticket_id, t.created_date created_date, t.created_by created_by, t.ticket_status ticket_status,
      t.last_changed last_changed, h.created_date closed_date
       from n01.cc_ticket_info t
       inner join n01.cc_ticket_status_history h
       on (t.ticket_id = h.ticket_id)
       where t.last_changed >= '6/28/2012 17:28:59' and t.last_changed < (sysdate + interval '1' day);
      type total_tckt_colcn
       is
       TABLE OF cur_total_tckt%rowtype;
      total_tckt_col total_tckt_colcn;
      total_coach_col total_tckt_colcn;
       begin
      total_tckt_col  := total_tckt_colcn ();
      total_coach_col := total_tckt_colcn ();
       OPEN cur_total_tckt;
      loop
       fetch cur_total_tckt bulk collect into total_tckt_col;
    -- fetch cur_total_tckt bulk collect into total_tckt_col limit 100;
       EXIT
       WHEN (cur_total_tckt%NOTFOUND);
       END LOOP ;
       CLOSE cur_total_tckt;  
      dbms_output.put_line(total_tckt_col.LAST); 
       FOR i IN total_tckt_col.first..total_tckt_col.last
      LOOP
      dbms_output.put_line(i);
       END LOOP;
       end;

    Ishan wrote:
    Here is modified version of your code on standard EMP table in scott schema.
    Did you test it? All you demonstrate is last batch has 4 rows. But you print it outsite the loop. This way if last batch is incomplete (has less than limit rows) your loop doesn't process last batch. Assume you want to print enames:
    DECLARE
        CURSOR cur_total_tckt
          IS
            select  ename
              from  emp; -- I have a total of 14 records in this table
            type total_tckt_colcn
              is
                TABLE OF cur_total_tckt%rowtype;
            total_tckt_col total_tckt_colcn;
    BEGIN
        total_tckt_col  := total_tckt_colcn ();
        OPEN cur_total_tckt;
        LOOP
          fetch cur_total_tckt bulk collect into total_tckt_col limit 5;
          EXIT WHEN cur_total_tckt%NOTFOUND;
          FOR v_i IN 1..total_tckt_col.count LOOP
            dbms_output.put_line(total_tckt_col(v_i).ename);
          END LOOP;
        END LOOP ;
        CLOSE cur_total_tckt;
    END;
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    PL/SQL procedure successfully completed.
    SQL>
    As you can see, it didn't print last batch. Why? Because NOTFOUND is set to true if exact number of rows you asked to fetch was not fetched. So last batch has 4 rows while code asks to fetch 5. Therefore, NOTFOUND is set to true and code exits before processing that last batch. So you have to repeat processing code again outside the loop:
    DECLARE
        CURSOR cur_total_tckt
          IS
            select  ename
              from  emp; -- I have a total of 14 records in this table
            type total_tckt_colcn
              is
                TABLE OF cur_total_tckt%rowtype;
            total_tckt_col total_tckt_colcn;
    BEGIN
        total_tckt_col  := total_tckt_colcn ();
        OPEN cur_total_tckt;
        LOOP
          fetch cur_total_tckt bulk collect into total_tckt_col limit 5;
          EXIT WHEN cur_total_tckt%NOTFOUND;
          FOR v_i IN 1..total_tckt_col.count LOOP
            dbms_output.put_line(total_tckt_col(v_i).ename);
          END LOOP;
        END LOOP ;
        FOR v_i IN 1..total_tckt_col.count LOOP
          dbms_output.put_line(total_tckt_col(v_i).ename);
        END LOOP;
        CLOSE cur_total_tckt;
    END;
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
    PL/SQL procedure successfully completed.
    SQL>
    But you must agree repeating that processing code twice isn't best solution. When using BULK COLLECT LIMIT we should exit not by NOTFOUND but rather by collection.count = 0:
    DECLARE
        CURSOR cur_total_tckt
          IS
            select  ename
              from  emp; -- I have a total of 14 records in this table
            type total_tckt_colcn
              is
                TABLE OF cur_total_tckt%rowtype;
            total_tckt_col total_tckt_colcn;
    BEGIN
        total_tckt_col  := total_tckt_colcn ();
        OPEN cur_total_tckt;
        LOOP
          fetch cur_total_tckt bulk collect into total_tckt_col limit 6;
          EXIT WHEN total_tckt_col.count = 0;
          FOR v_i IN 1..total_tckt_col.count LOOP
            dbms_output.put_line(total_tckt_col(v_i).ename);
          END LOOP;
        END LOOP ;
        CLOSE cur_total_tckt;
    END;
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    ADAMS
    JAMES
    FORD
    MILLER
    PL/SQL procedure successfully completed.
    SQL>
    SY.

  • SQL Developer 3.2 crashes with java error when using OCI/Thick Driver

    I just installed SQL Developer 3.2 on my linux desktop. SQL Developer crashes with a java error when I select a database from the object tree.
    When I check Use OCI/Thick driver the application will crash when I navigate to the tree and open a database.
    The app does not crash then I have Use OCI/Thick driver unchecked.
    Here are some details of my environment:
    Desktop OS: Fedora 17 Linux
    $ uname -a
    Linux 3.5.1-1.fc17.x86_64 #1 SMP Thu Aug 9 17:50:43 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
    Java:
    $ java -version
    java version "1.6.0_34"
    Java(TM) SE Runtime Environment (build 1.6.0_34-b04)
    Java HotSpot(TM) 64-Bit Server VM (build 20.9-b04, mixed mode)
    Oracle instant client:
    $ sqlplus -V
    SQL*Plus: Release 11.2.0.3.0 Production
    Here are the error messages:
    $ sqldeveloper
    Oracle SQL Developer
    Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
    # A fatal error has been detected by the Java Runtime Environment:
    # SIGSEGV (0xb) at pc=0x00007f6de7157664, pid=3049, tid=140109371119360
    # JRE version: 6.0_34-b04
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (20.9-b04 mixed mode linux-amd64 compressed oops)
    # Problematic frame:
    # V [libjvm.so+0x516664] unsigned+0xd4
    # An error report file with more information is saved as:
    # /tmp/hs_err_pid3049.log
    # If you would like to submit a bug report, please visit:
    # http://java.sun.com/webapps/bugreport/crash.jsp
    /opt/sqldeveloper/sqldeveloper/bin/../../ide/bin/launcher.sh: line 544: 3049 Aborted (core dumped) ${JAVA} "${APP_VM_OPTS[@]}" ${APP_ENV_VARS} -classpath ${APP_CLASSPATH} ${APP_MAIN_CLASS} "${APP_APP_OPTS[@]}"

    I also had the problem of SQL Developer crashing when using OCI/Thick driver but I've managed to solve it. My configuration is:
    - Windows 64-bit
    - Java 64-bit (1.6.0.34)
    - SQL Developer 3.2.09 64-bit
    - OCI Instant client 11.2.0.3 64-bit (without installation).
    The thing that solved the problem was copying two files, ojdbc5.jar and ojdbc6.jar, from Instant client installation folder to JAVA_HOME/lib/ext folder+.
    After that, I haven't had a single crash or error message.
    The same trick that solved the problem on 64-bit installation also solved the problem on another windows computer with 32-bit SQL Developer installation.

  • XML Parse issues when using Network Data Model LOD with Springframework 3

    Hello,
    I am having issues with using using NDM in conjuction with Spring 3. The problem is that there is a dependency on the ConfigManager class in that it has to use Oracle's xml parser from xmlparserv2.jar, and this parser seems to have a history of problems with parsing Spring schemas.
    My setup is as follows:
    Spring Version: 3.0.1
    Oracle: 11GR2 and corresponding spatial libraries
    Note that when using the xerces parser, there is no issue here. It only while using Oracle's specific parser which appears to be hard-coded into the ConfigManager. Spring fortunately offers a workaround, where I can force it to use a specific parser when loading the spring configuration as follows:
    -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl But this is an extra deployment task we'd rather not have. Note that this issue has been brought up before in relation to OC4J. See the following link:
    How to change the defaut xmlparser on OC4J Standalone 10.1.3.4 for Spring 3
    My question is, is there any other way to configure LOD where it won't have the dependency on the oracle parser?
    Also, fyi, here is the exception that is occurring as well as the header for my spring file.
    org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
    Line 11 in XML document from URL [file:/C:/projects/lrs_network_domain/service/target/classes/META-INF/spring.xml] is invalid;
    nested exception is oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'
         at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
         [snip]
         ... 31 more
    Caused by: oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'
         at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:425)
         at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:287)
         at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:331)
         at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:222)
         at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:155)
         at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
         at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)Here is my the header for my spring configuration file:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">Thanks, Tom

    I ran into this exact issue while trying to get hibernate and spring working with an oracle XMLType column, and found a better solution than to use JVM arguments as you mentioned.
    Why is it happening?
    The xmlparserv2.jar uses the JAR Services API (Service Provider Mechanism) to change the default javax.xml classes used for the SAXParserFactory, DocumentBuilderFactory and TransformerFactory.
    How did it happen?
    The javax.xml.parsers.FactoryFinder looks for custom implementations by checking for, in this order, environment variables, %JAVA_HOME%/lib/jaxp.properties, then for config files under META-INF/services on the classpath, before using the default implementations included with the JDK (com.sun.org.*).
    Inside xmlparserv2.jar exists a META-INF/services directory, which the javax.xml.parsers.FactoryFinder class picks up and uses:
    META-INF/services/javax.xml.parsers.DocumentBuilderFactory (which defines oracle.xml.jaxp.JXDocumentBuilderFactory as the default)
    META-INF/services/javax.xml.parsers.SAXParserFactory (which defines oracle.xml.jaxp.JXSAXParserFactory as the default)
    META-INF/services/javax.xml.transform.TransformerFactory (which defines oracle.xml.jaxp.JXSAXTransformerFactory as the default)
    Solution?
    Switch all 3 back, otherwise you'll see weird errors.  javax.xml.parsers.* fix the visible errors, while the javax.xml.transform.* fixes more subtle XML parsing (in my case, with apache commons configuration reading/writing).
    QUICK SOLUTION to solve the application server startup errors:
    JVM Arguments (not great)
    To override the changes made by xmlparserv2.jar, add the following JVM properties to your application server startup arguments.  The java.xml.parsers.FactoryFinder logic will check environment variables first.
    -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
    However, if you run test cases using @RunWith(SpringJUnit4ClassRunner.class) or similar, you will still experience the error.
    BETTER SOLUTION to the application server startup errors AND test case errors:
    Option 1: Use JVM arguments for the app server and @BeforeClass statements for your test cases.
    System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
    System.setProperty("javax.xml.parsers.SAXParserFactory","com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
    System.setProperty("javax.xml.transform.TransformerFactory","com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl");
    If you have a lot of test cases, this becomes painful.
    Option 2: Create your own Service Provider definition files in the compile/runtime classpath for your project, which will override those included in xmlparserv2.jar.
    In a maven spring project, override the xmlparserv2.jar settings by creating the following files in the %PROJECT_HOME%/src/main/resources directory:
    %PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.parsers.DocumentBuilderFactory (which defines com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl as the default)
    %PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.parsers.SAXParserFactory (which defines com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl as the default)
    %PROJECT_HOME%/src/main/resources/META-INF/services/javax.xml.transform.TransformerFactory (which defines com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl as the default)
    These files are referenced by both the application server (no JVM arguments required), and solves any unit test issues without requiring any code changes.
    This is a snippet of my longer solution for how to get hibernate and spring to work with an oracle XMLType column, found on stackoverflow.

  • Problems with the ActiveX bridge for Java beans when using third-party .jar

    I encountered the following problem when using the ActiveX bridge for a java bean:
    I am using JDK 1.4.2_09 and MS Visual Basic 6.0 (SP6). I wrote a java bean called ProcessViewer (my class ProcessViewer inherits from JComponent and implements the interfaces Serializable and AdjustmentListener) which I would like to use within a VB 6.0 application. I used the ActiveX bridge (packager.exe) to generate a DLL (ProcessViewer.dll) and registered it successfully. The java bean GUI-control works fine within my VB 6.0 application unless my java bean (ProcessViewer.jar) uses any third-party .jar files.
    But when I tried to add a reference to some third-party class (com.sap.xxx.xxx....) I got some problems. I could solve the problem with packager.exe by setting the correct CLASSPATH. But at runtime my VB 6.0 application does not work. It crashes or it reports an error like this: "The control ... could not be loaded from axbridge.dll" (although I deployed my .jar file correctly to the directory C:\Programme\Java\j2re1.4.2_09\axbridge\bin and lib). Setting the CLASSPATH environment variable before calling my VB 6.0 application (exe) did not solve the problem.
    How can I teach my VB 6.0 application (containing the Java bean ActiveX control) where to find the third-party .jar file? Copying the third-party .jar file to the JRE lib-folder or to the axbridge\lib folder did not solve the problem either.
    I studied the documentation about the ActiveX bridge given at:
    http://java.sun.com/j2se/1.4.2/docs/guide/beans/axbridge/developerguide/index.html
    but I am missing informations on how the third-party .jar files can be found during runtime of the ActiveX container (e. g. a VB 6.0 application).

    See how to solve your problem with JNI:
    http://codeproject.com/cpp/OOJNIUse.asp
    More examples (for SWING) in tools setup:
    http://www.simtel.net/product.php[id]95126[SiteID]simtel.net
    http://www.simtel.net/product.php[id]94368[SiteID]simtel.net
    http://www.simtel.net/product.php[id]93174[SiteID]simtel.net

  • "NoSuchMethodError" when using DOMParser

    Here's a real headache... much appreciation to anyone who can figure this out:
    I've installed the Winter '01 XML Pack on my NT box. To build a basic XML DOM program, I initially developed using a simple Java program running on the DOS prompt. No big deal, I got it to work perfectly.
    My next step: use what I had done to create a servlet that will parse and display my XML document. The process is a tad complex, but to simplify it: I created a XML DOM TreeTraversal, extracted what I needed to display, and displayed it. This all worked fine from my DOS program, and the servlet version of it compiled nicely, but when I tried to run the servlet (using WebSphere Application Server), I received the following error:
    org.apache.xerces.dom.NodeImpl: method Lorg/apache/xerces/dom/CoreDocumentImpl;)V not found java.lang.NoSuchMethodError: (followed by a long chain of "at someclass (line number)")
    Basically, this says that the class NodeImpl does not have a constructor NodeImpl(org.apache.xerces.dom.CoreDocumentImpl). Apparantly, this is used somewhere down the line by org.apache.xerces.parsers.DOMParser, the DOM parser that I am using. However, I did not have this problem when running it from the DOS prompt; I only encountered this error when executing the servlet (no problem compiling it).
    My first thought: WebSphere must be using a different version of the parser. However, I was using the same .jar file in my WebSphere classpath as my DOS classpath. And when I removed the .jar file from the server's classpath, it threw a simple ClassNotFoundException. Conclusion: the server and my DOS program are using the exact same classes.
    So, out of curiosity, I used a series of getClass().getConstructors and other means to get a listing of all the contructors and methods in NodeImpl. And I discovered this: the constructor NodeImpl(org.apache.xerces.dom.CoreDocumentImpl) does not exist. I ran these tests in both the DOS program AND in the servlet, and neither listing had this constructor.
    So you would think that it might be a bug in the API. But why would it work from a DOS program and not a servlet? And if that constructor isn't present for the checks from the DOS program, how on Earth is it running?
    Any insights on this problem would be greatly appreciated. Here's a code snippet:
    +++++
    This section takes care of all the parsing into a DOM tree:
    File file = new File("/u/swf/sso/swfProduct.xml");
    DOMParser parser = new DOMParser();
    parser.parse(file.toURL().toString()); //This is the line that causes the problem (parser.parse(...));
                                           //if I comment out this line and everything else after it, it works fine.
    Document doc = parser.getDocument();
    Element root = doc.getDocumentElement();
    TreeWalker tree = ((DocumentTraversal)doc).createTreeWalker(root, NodeFilter.SHOW_ALL, null, true);

    You've heard of DLL Hell? Well, you're in XML Hell.No argument there.
    Is the version of Websphere you are using 3.5 or
    earlier?Yes. WebSphere 3.5.5.
    If so, then it uses the XML4J parser,
    version 2.0.15 (which is a.k.a. Xerces, hence the
    package names). That uses level 1, whereas newer
    parsers (what you used) use level 2. And because of
    the way Websphere implemented class loaders, it forces
    your servlets to use that parser too. Also, you
    probably don't actually know the classpath Websphere
    is using. True, but I found the .jar file xml4j.jar in the WAS's lib directory. I looked at it's contents, and I found no trace of the Xerces parser. Furthermore, when I removed xerces.jar (which I downloaded from the Java site) from the application's classpath, I got the old ClassNotFoundException; this says to me that WebSphere either doesn't have the Xerces parser, or it doesn't automatically include it in the classpath.
    One of the important changes in Websphere version 4.0
    is that it fixes that problem, and allows you to use
    any parser you like. But I would hate to tell you
    that upgrading to Websphere 4.0 is your solution. It
    may well be, but having wrestled with that upgrade for
    two weeks last month, I would try almost anything else
    first.<sarcasm>I can't think of anything I'd love more than to upgrade to WebSphere 4.0.</sarcasm> But, while I may be able to convince management to upgrade to 4.0 on NT, there's no way they'd put out the money for the matching upgrade to 4.0 on OS/390 that we'd have to do (we're talking tens of thousands, or some un-godly amount). So you're right; upgrading to 4.0 is not a feasible option right now. It's nice to know that the problem will be fixed some day, though...
    Problem is, the only other solution I can come up with
    is to find the jar file that Websphere actually uses
    for its XML parser, and to compile against that
    insteadI've been working on that... WebSphere has a LOT of .jar files. I don't suppose you know which one it is?
    The next thing I'm going to look into is the possibility of an IBM XML parser. Somewhere, I got the idea that IBM supplies an implementation of a DOM parser with WebSphere. I hate using proprietary APIs, but I may have no other choice. Have you heard of this IBM DOM parser? Is it any good? Does it have the same interface as Xerces?
    Thanks a lot for your help!

  • Corrupt data error when using Windows backup on Oracle

    Our SAP servers include a SDLT internal tape drive that we use for doing a complete system backup.  When using Windows Backup we get the following message in the backup log:
    WARNING: Portions of "\oracle\T00\sapdata1\protd_2\PROTD.DATA2" cannot be read.  The backed up data is corrupt or incomplete.
    This file will not restore correctly.
    This is occuring on a couple of different systems but the wierd thing is when this happens in occurs on one Oracle drive in one system and the other Oracle drive on another system i.e. the G: drive on our TST sysytem and the E: drive on another.  The E: and G: drives contain the main Oracle datafiles.
    Has anybody ever encounter something like this and what can I do about it?
    Thanks;
    Gale S.

    Especially no backup tool would know about the
    fact
    that a Oracle block had been changed after it was
    copied.
    Now I have to contracdict
    There are backup tools (e. g. OpenFile Manager from
    Legato/EMC), that track the filesystem changes and
    makes sure, the backups are consistent in sense of
    filesystem blocks. We´re backing up some ORA
    databases (non-SAP, 7.3.4 and 8.1.7) for ages now -
    and I never saw this kind of corruptions.
    Well, these Backup-Tools do perform copies I/O-Consistent. That's different than DB-Block-consistent in the first place. Anyhow due to the fact that the DBMS do have a syncronizing between I/Os and writing out the blocks this leads both to consistent blocks.
    I just wonder, how the database would deal with such
    "inconsistent" files. Given the fact, you start a
    backup at filesystem block 0, the database is being
    backed up and a transaction is committed and
    something is written to block 100, 200 and 500. The
    backup is on block 300. If you now restore the
    database, it has the already commited block 500 in
    the file but 100 and 200 are not yet written in the
    database file. The redo will then find an already
    commited transaction on 500. What magic will tell the
    engine, that this is due to an online database
    backup? I mean, if you set the tablespace to backup,
    the engine "knows" the state - but if you just backup
    the file, the engine is unaware of that... I´m just
    curious how this is handled...
    Well the trick here is: we tell the database before we plan to copy the data. When a ONLINE backup is done, the tablespaces are set into BACKUP mode. This changes two things for us:
    1. The datafile headers of these tablespaces are not updated anymore although dirty blocks are still written out to these files. Since the control files that keep the SCN (system change number) are updated nevertheless, the database will know at recovery time that these files had been in online backup mode and do need recovery to become consistent again.
    2. The UNDO-information is not only written out to the UNDO/ROLLBACK-Tablespace but additionally to the REDOLOGS. So, for the time where the tablespaces are in BACKUP mode, we have all information needed to make a block consistent again - regardless if a transaction had been commited or rolled back - in the redolog. So a full recovery of all changes is possible with
    that.
    That's basically the "magic" behind this.
    If the copy of the datafile is done without this - well, then there's no magician in the world that would been able to get it consistent again. Online Backups with Oracle are only possible with BACKUP mode or RMAN (ok, and possible some 3rd party hacks...).
    KR Lars

  • When using java -jar does -cp have any significance?

    So we have a classpath that's set from the Manifest but I want to augment that with -cp
    From what I can tell -cp is ignored when you are using the classpath from a Manifest.

    >
    From what I can tell -cp is ignored when you are using the classpath from a Manifest.>No. The -cp option is ignored when using the -jar option.
    So if you do something like..
    REM: old way of launching
    REM: java -jar the.jar arg1 arg2
    java -cp the.jar;...;another.jar the.main.class arg1 arg2..it should work as expected.

Maybe you are looking for

  • How to play a dvd on a macbook pro with retina display

    I recently bought a Macbook pro with retina display and was suprised to see that there is no slot to put a dvd or cd into. For the amount paid i feel this is ridiculous. However wish to seek a solution, does anyone know of how to solve this problem?

  • Problem with formula

    hi please provide me the solution for my scenario. i have actual quantity field and plan quantity filed. my client wants to analyze how accurately he is planning. so i need to calculate the %DEVIATION. my scenario is ...they planned to sell in partic

  • Indesign getting "serious error"

    Hi everyone, I'm hoping someone can help me! Of course this problems happens on deadline of my 144pg. magazine. We're using InDesign/InCopy to go back and forth with the designers (us) and the editors. Yesterday, we were updating assignments and havi

  • Slapd errors in log

    I had a bit of a melt down on my server and had to blow away OD and restore it from a backup. All is working fine, except I have repeaded slapd messages in the log. slapd[410]: SASL [conn=2341] Failure: realm changed: authentication aborted Any ideas

  • Kernel panic on Qemu

    I run 2008.6 iso/img on Qemu machine. It checks the virtual machine's disk and trun to panic. It says"Try to kill init process", and then the machine suspended. the usb img works fine in physical machine, but also cause kernel panic when i boot it un