Glassfish can't find JAX-WS handler classes

Hi,
Created a JAX-WS Stateless EJB3 Endpoint, configured JAX-WS handlers using a handler chain XML, deployed on Glassfish 3.1.2. Glassfish won't find any of the 3 handler classes. I've verified and reverified that the handler XML uses the correct package and class name. The first two of three handlers are part of the project while the third one is in a jar in the lib, so obviously they are all on the class path.
Any help is greatly appreciated. Google searches showed that people had similar issue before but no one seemed to have found a solution (or if they did they did not post it back).
Also posted [http://www.java.net/forum/topic/glassfish/metro-and-jaxb/glassfish-cant-find-jax-ws-handler-classes]
[#|2012-04-03T21:59:11.769-0400|SEVERE|glassfish3.1.2|javax.enterprise.webservices.org.glassfish.webservices|_ThreadID=16;_ThreadName=Thread-3;|Unable to load handler class edu.certification.abhijitsarkar.ocewsd.jaxws.ejb.webservice.handler.ProgrammaticAuthenticationHandler
java.lang.ClassNotFoundException: edu.certification.abhijitsarkar.ocewsd.jaxws.ejb.webservice.handler.ProgrammaticAuthenticationHandler
     at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1509)
     at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
     at java.lang.Class.forName0(Native Method)
     at java.lang.Class.forName(Class.java:247)
     at org.glassfish.webservices.WsUtil.processConfiguredHandlers(WsUtil.java:2141)
     at org.glassfish.webservices.WsUtil.configureJAXWSServiceHandlers(WsUtil.java:2193)
     at org.glassfish.webservices.EjbRuntimeEndpointInfo.prepareInvocation(EjbRuntimeEndpointInfo.java:266)
     at org.glassfish.webservices.EjbRuntimeEndpointInfo.initRuntimeInfo(EjbRuntimeEndpointInfo.java:343)
     at org.glassfish.webservices.WebServiceEjbEndpointRegistry.registerEndpoint(WebServiceEjbEndpointRegistry.java:129)
     at com.sun.ejb.containers.BaseContainer.initializeHome(BaseContainer.java:1181)
     at com.sun.ejb.containers.StatelessSessionContainer.initializeHome(StatelessSessionContainer.java:202)
     at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:167)
     at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:230)
     at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:299)
     at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:105)
     at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
     at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:264)
     at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
     at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
     at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
     at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
     at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
     at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
     at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
     at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
     at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
     at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
     at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
     at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
     at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
     at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
     at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
     at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
     at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
     at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
     at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
     at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
     at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
     at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
     at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
     at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
     at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
     at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
     at java.lang.Thread.run(Thread.java:680)
Endpoint:
@Stateless
@WebService(name="Time", serviceName="TimeService", portName="TimeServicePort")
@HandlerChain(file = "/handler-chain.xml")
@DeclareRoles({ "guest", "user" })
public class TimeService {
// code, probably irrelevant to the issue
handler-chain.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<javaee:handler-chains xmlns:javaee="http://java.sun.com/xml/ns/javaee"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <javaee:handler-chain>
          <javaee:handler>
               <javaee:handler-class>edu.certification.abhijitsarkar.ocewsd.jaxws.ejb.webservice.handler.HttpBasicAuthenticationHandler
               </javaee:handler-class>
          </javaee:handler>
          <javaee:handler>
               <javaee:handler-class>edu.certification.abhijitsarkar.ocewsd.jaxws.ejb.webservice.handler.ProgrammaticAuthenticationHandler
               </javaee:handler-class>
          </javaee:handler>
          <javaee:handler>
               <javaee:handler-class>edu.certification.abhijitsarkar.ocewsd.jaxws.utility.handler.SOAPRequestHandler
               </javaee:handler-class>
          </javaee:handler>
     </javaee:handler-chain>
</javaee:handler-chains>

Ok, I found the answer... it is actually a classic bug. The code that is loading the handler is located in WsUtil. Here is a link to version 3.1.1 of that code, although I am running 3.1.2.
http://grepcode.com/file/repo1.maven.org/maven2/org.glassfish.webservices/jsr109-impl/3.1.1/org/glassfish/webservices/WsUtil.java/
The method and line that blows up is org.glassfish.webservices.WsUtil.processConfiguredHandlers(WsUtil.java:2141). On that line (in version 3.1.2 - remember the link above is 3.1.1), there is a call to "Class.forName". It turns out that it is passing the exact UNTRIMMED name that is found in the generated JAX-WS handler-chain XML file (it was generated from wsimport in my case).
In my JAXWS customization file, I had placed the handler name "prettily" on its own line, with a carriage return like so:
(leading whitespace here - but these forums don't show whitespace)<javaee:handler-class>myHandler
(leading whitespace here - but these forums don't show whitespace)</javaee:handler-class>
That extra whitespace is NOT BEING TRIMMED in the code responsible for parsing the file. That is the problem, plain and simple. I fixed that:
<javaee:handler-class>myHandler</javaee:handler-class>
... and the problem went away.
To confirm this, I looked in the logs of the Glassfish server at all the times it complained it could not load class "myHandler", and found it was actually complaining about "myHandler " (i.e. with many spaces).
Hope this helps someone.
Edited by: Bland on Jun 14, 2012 2:41 PM
Edited by: Bland on Jun 14, 2012 2:43 PM
Edited by: Bland on Jun 14, 2012 2:44 PM

Similar Messages

  • Can't find the imported java class when run .jsp file

    Hi,
    I want to run a jsp web application using tomcat. I put all my .jsp files under "TOMCAT_HOME/webapps/junmin" directory, and put all .class files under "TOMCAT_HOME/webapps/junmin/WEB-INF/classes" directory. I set up TOMCAT_HOME AND JAVA_HOME already. But when I type in the address like below:
    http://db1.acad.emich.edu:8080/junmin/login.jsp
    The IE will give me error msg indicating that it can't find all the .class files which I imported them in login.jsp file.
    So, does anyone know that if I miss some configuration in order to let the .jsp file recognize the .class files. Thanks a lot!
    Sincerely, Junmin

    Ha, this might be the reason.
    Can I add sth like this:
    <Context path="/junmin" docbase="junmin" debug=0 reloadable=true>
    </Context>
    But in my local computer, I didn't add this <Context> either. It works well.
    Thanks a lot! I will ask the administrator to try this.
    And will write down the reason.
    Sincerely, Junmin

  • Where can I find java algorithms and classes

    Does anyone here know about places on the net where you can download algorithms and classes written in Java?
    I am looking for a method/class that is able to do the following:
    Given a mispelled word. Find the word in a word list that best matches this word.
    Obviously simple wildcards isn't going to cut it.

    Your best bet would probably be to implement the Soundex or Metaphone algorithms. They're frequently used for word-matching.
    The SOUNDEX algorithm is an algorithm used to convert words into a 1 character, 3 digit code that can be used for phonetic comparisons. More on it can be found at http://www.myatt.demon.co.uk/sxalg.htm
    Metaphone has better performance.

  • JDBC adapter can't find the jdbc driver class

    Hello, my jdbc driver give an very strange error
    11:46:13 (4207): JDBC adapter terminated
    Mon Aug 02 11:46:13 CEST 2004 *****
    11:46:13 (4210): ERROR: Attempt to load JDBC driver failed ("java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver")
    Attempt to intialize JDBC adapter failed
    11:46:13 (4203): Unable to start JDBC adapter (not initialized)
    I know that the jdbc driver is in the classpath, and to confirm that I have created a java program in the IB (repository) which import the class oracle.jdbc.driver.OracleDriver. I can compile and run that program without problems.
    Here you can see my jdbc adapter configuration file:
    jdbc adapter java class
    classname=com.sap.aii.messaging.adapter.ModuleDB2XMB
    mode=DB2XMB
    Integration Engine address and document settings (example, see docu)
    XMB.TargetURL=http://<host>:<port>/sap/xi/engine?type=entry
    XMB.SenderBusinessSystem=ExtAdapterSender
    XMB.SenderInterfaceNamespace=http://sap.com/xi/xidemo
    XMB.SenderInterfaceName=ExtAdapterSenderIF
    XMB.QualityOfService=EO
    ##DB Adapter specific parameters (example for SQL-Server, see docu)
    db.jdbcDriver=oracle.jdbc.driver.OracleDriver
    db.connectionURL=jdbc:oracle:<user>:<password>/hello@<url>:<port>:<instance>
    db.processDBSQLStatement=Select * emp
    db.pollInterval=600
    xml.recordsetsPerMessage=1

    Hi Ernesto,
    Can you try to the following:
    1. Remove your JDBC driver entries from the CLASSPATH.
    2. Put those jars into your jre/lib/ext directory.
    3. Restart the whole adapter engine, and
    4. Config the driver java class for the adapter. the class name to be used can be found in your JDBC driver document.
    Let me know whether it works.
    Hart

  • Where can I find an event handling for non gui purposes good tutorial

    Hello to all, I am searching the net for a good tutorial about java Event and Event handling that is not GUI related.
    All I find on the net are tutorial and examples that are related to GUI components the has pre defined events and handlers.
    please help me find good material to learn from.
    Appreciate it a lot.
    Dan

    I'd say goto the Java tutorial (www.thejavatutorial.com) and check up from there. Just because most event handleing is done in GUI's (swing comes to mind) doesn't imply its limited to that. For an example, check out the JavaBeans trail. Beans have ways to communicate with each other when (for example) a change in the bean occurs. Thats done through an event yet isn't related to GUI's in any way.

  • Where can I find this standard SAP class?

    Hi all,
    Which PAR file contains this class:
    com.sapportals.wcm.control.search.SearchLanguageControl
    It is a standard search component called "search_language". I have two problems with this component:
    1. Too many languages are displayed (e.g. Greek and Serbian. However, I don't know why these languages are displayed)
    2. I want that the user language is only selected and not the predefined language, too.
    Kind regards
    Philipp Kölsch

    Hi,
    Refer this link it explain you how to set default language.
    http://help.sap.com/saphelp_nw04/helpdata/en/44/e4561731e767d6e10000000a155369/frameset.htm
    Regards,
    Senthil K.

  • Where can I find CLDC class source?

    We can find source of J2SE classes inside src.zip of JDK. Similarly where can we find source of CLDC classes? I need source of java.util.Calendar class.

    i got it here :http://java.sun.com/javame/downloads/index.jsp

  • .v2.XMLParseException:Can not find definition for element 'descriptor'

    I am getting the following error, while running 'empps.jsp' ...when executing the tutorial given at
    ERROR Details:
    500 Internal Server Error
    javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: Error getting property 'employees' from bean of type jsftoplink.model.EmployeesClient: Exception [TOPLINK-25004] (Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061004)): oracle.toplink.exceptions.XMLMarshalExceptionException Description: An error occurred unmarshalling the documentInternal Exception: Exception [TOPLINK-27101] (Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061004)): oracle.toplink.platform.xml.XMLPlatformExceptionException Description: An error occurred while parsing the document.Internal Exception: oracle.xml.parser.v2.XMLParseException: Can not find definition for element 'class-descriptor-type'     at com.sun.faces.taglib.html_basic.DataTableTag.doEndTag(DataTableTag.java:501)     at emps.jspService(_emps.java:629)
    Pls help me in resolving this issue.

    I am still gettng the same error. The xml file is now
    <?xml version="1.0" encoding="UTF-8"?>
    <CUSTOMER xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="" ID="568945">
    <FIRSTNAME>Arnold</FIRSTNAME>
    <LASTNAME>McEriccson</LASTNAME>
    <ADDRESS>
    <LINE1>31, Nomadic Avevnue</LINE1>
    <LINE2>Pasadena Clove</LINE2>
    <CITY>WoolTown, MT</CITY>
    <ZIP>45263</ZIP>
    </ADDRESS>
    <BIRTHDATE>1967-08-13</BIRTHDATE>
    </CUSTOMER>
    The xsd file is:
    <?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="CUSTOMER">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="FIRSTNAME" type="xs:string"/> <xs:element name="LASTNAME" type="xs:string"/> <xs:element name="ADDRESS"> <xs:complexType>
    <xs:sequence>
    <xs:element name="LINE1" type="xs:string"/> <xs:element name="LINE2" type="xs:string"/> <xs:element name="CITY"/>
    <xs:element name="ZIP" type="xs:int"/> </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element name="BIRTHDATE" type="xs:date"/> </xs:sequence>
    <xs:attribute name="ID" type="xs:double"/> </xs:complexType>
    </xs:element>
    </xs:schema>
    There seems to be something fairly obvious that i am missing.

  • Missing Class error from handler class - urgent question!

    Hi,
    I am getting an "Missing Class" error when running a web service. The web service was generated from a Java class via the "create J2EE web service" option.
    The web service has a JAX-RPC handler class added, which belongs to the same package as a logging class. The logging class is used to write to a file for debug purposes. A "missing class" error is being generated whenever I attempt to invoke the web service (via the enterprise manager test util), the error refers to the logging class which is used by the main handler class. The JAX-RPC handler works fine by itself, the error is only seen when I attempt to use the logging class.
    I have re-built, re-deployed from scratch again, but still get the same error! Am I missing something simple here?
    thanks for any advice

    Hello,
    I have posted something similar, but I am not sure how to get over this issue. I am not sure if this is a code issue, I have scanned both EJB 2.0 and 2.1 specifications, but nothing caught my eye.
    Here is the error I am getting starting this in JDeveloper 1013 :
    Apr 11, 2006 12:17:49 AM com.evermind.server.Application setConfig
    WARNING: Application: current-workspace-app is in failed state as initialization failedjava.lang.InstantiationException: Error initializing ejb-modules: [current-workspace-app:CNSI-JDev-7_Exp-7_0:DbUtilWrapper] - Unable to load ejb-class com.my.common.database.ejb.DbUtilWrapperBean, see section 23.2 of the EJB 2.1 specificationjava.lang.ExceptionInInitializerError: java.lang.NullPointerException
    Here is the ejb-jar.xml :
    <session>
    <description>Session Bean ( Stateless )</description>
    <display-name>DbUtilWrapper</display-name>
    <ejb-name>DbUtilWrapper</ejb-name>
    <home>com.my.common.database.ejb.DbUtilWrapperHome</home>
    <remote>com.my.common.database.ejb.DbUtilWrapper</remote>
    <local-home>com.my.common.database.ejb.DbUtilWrapperLocalHome</local-home>
    <local>com.my.common.database.ejb.DbUtilWrapperLocal</local>
    <ejb-class>com.my.common.database.ejb.DbUtilWrapperBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    I am not sure if this should be in the assembly-descriptor, in ejb-jar.xml or orion-ejb-jar.xml :
    <method-permission>
    <unchecked/>
    <method>
    <ejb-name>DBUtilWrapper</ejb-name>
    <method-name>*</method-name>
    </method>
    </method-permission>
    Any ideas ?
    Thanks

  • Own connection handling class

    hi all,
    In the jdbcpds.conf file, it is mentioned that we can write our own connection handling class which extends the provided JDBCConnectionHandling class
    What i tried after looking at the methods of connection handler is something like this
    class myJDBCConnectionHandling extends JDBCConnectionHandling
    protected void parseConnectInfo(String s, JDBCConnectDialog jdbcconnectdialog, Plugin plugin)
    throws Exception
    String dbUrl = null;
    dbUrl = "<user>/<pwd>@<remotedatabase>";
    super.parseConnectInfo(dbUrl, jdbcconnectdialog, plugin);
    Is there anything else that needs to be done
    because this is throwing an error
    JDBCPDS-62008 : Failed to connect to the datasource null
    Invalid arguments in the call
    Can anybody correct me
    Of course my main purpose of trying this is to have something like a logical name given to the P_JDBCPDS parameter which can be mapped to the actual database url using JNDI lookup.
    what i was expecting was, the string when passed to the connection handler, i can add the code to lookup the name in my own connection handler and leave the rest to the provided JDBCConnectionHandling class
    Am i going in right direction or not
    Or if anybody has any other solution you are welcome to suggest
    Any sort of help is greatly appreciated
    Thanks in advance
    Ramakrishna

    hi,
    One more thing i forgot to mention was that i am not too concerned about this lookup in reports builder
    I need when this is running on the server
    thanks & regards
    ramakrishna

  • Can't find constructor

    I am trying to write a program but for some reason Java can't find my constructor
    public class Combinations
         public void Combinations(int num1, int num2)
              comb(num1, num2);
    }This is the error I get:
    Combinations.java:58: cannot find symbol
    symbol : constructor Combinations(int,int)
    location: class Combinations
              new Combinations(52, 3);
    Does anyone know why I am getting this error?

    I just figured it out. Constructors can't have return types. Sorry to bother you guys

  • Can't find javax.ejb

    Our instructor has given us a sample program that demonstrates ejbs.
    I could get it to run on the school computer but when I try at home I get the error:
    C:\includeEJB>c:\Java\bin\javac @HelloEJBOptions @HelloEJBclasses
    HelloEJB\ejb\Hello.java:13: package javax.ejb does not exist
    public interface Hello extends javax.ejb.EJBObject
    ^
    The instructor has us compile the code with the following batch file:
    :: Compiling EJB code
    c:\Java\bin\javac @HelloEJBoptions @HelloEJBclasses
    :: creating the JAR file
    cd HelloEJB
    c:\Java\bin\jar -cf  ..\Hello\HelloEJB.jar *
    cd ..
    :: Compiling Web code
    c:\Java\bin\javac @HelloWeboptions @HelloWebclasses
    :: creating the WAR file
    cd HelloWeb\web
    c:\Java\bin\jar -cf  ..\..\Hello\HelloWeb.war *
    :: creating the EAR file
    cd ..\..\Hello
    c:\Java\bin\jar -cf  ..\Hello.ear *
    cd ..
    pauseI believe the school computer uses j2se sdk 1.4.2 and that's what I have installed on my computer.
    I believe the error I am getting is saying that the compiler can't find the javax.ejb class. Is this a correct assumption?
    If so, why? Do I have the wrong java version? Does it have to do with the classpath? I am at a loss and have tried downloading j2se sdk 1.5 and j2ee sdk 1.4 and still get the same error.
    Any help would be appreciated.

    I am still trying to find the package javax.ejb. Can anyone please explain what directory I would find this package. I can find the javax directory but I don't see the ejb package included. Should it be listed where I can see it,, or is it something that is down in the directory further? If it should be present in the javax package and I'm not seeing it, can I download just that package from somewhere?
    Thanks in advance for any help. I'm sure that I'm doing something basic wrong so please don't be afraid to give me the most basic help. I have tried downloading J2SE SDK 1.4.2, J2SE SDK 1.5, and J2EE SDK 1.4 and always get the error saying the compiler can' find javax.ejb.
    I'm almost positive the code is fine because it ran on the school computer, but I'm still not ruling that out.

  • Can't find class because of try catch block ?!

    Hello,
    I'm using the JNI to use a java library from my c++ code.
    JNI can't find the "Comverse10" class below, but when i put the try catch block in createMessage in comment, FindClass succeeds ?!
    Unfortunatly i need the code inside the try block ;-)
    I tried a few things, but none of them worked:
    - let createMessage throw the exception (public void createMessage throws ElementAlreadyExistsException ), so there isn't a try catch block in createMessage => result: the same
    - make a "wrapper" class Comverse that has a Comverse10 object as attribute and just calls the corresponding Comverse10.function. Result: Comvers could be found, but not constructed (NewObject failed).
    Can someone tell me what is going on ?!
    Thank you,
    Pieter.
    //Comverse10 class
    public class Comverse10 {
    MultimediaMessage message;
    /** Creates a new instance of Comverse10 */
    public Comverse10() {
    public void createMessage() {
    TextMediaElement text1 = new TextMediaElement("Pieter");
    text1.setColor(Color.blue);
    SimpleSlide slide1 = new SimpleSlide();
    //if i put this try catch block in comment, it works ?!
    try{
    slide1.add(text1);
    catch(com.comverse.mms.mmspade.api.ElementAlreadyExistsException e){}
    MessageContent content = new MessageContent();
    content.addSlide(slide1);
    this.message = new MultimediaMessage();
    message.setContent(content);
    message.setSubject("Mijn subjectje");
    for those of you who are intersted: here's my C++ code:
    //creation of JVM
    HRESULT Java::CreateJavaVMdll()
         HRESULT HRv = S_OK;
    char classpath[1024];
         jint res;
         if(blog)     this->oDebugLog->Printf("CreateJavaVMdll()");
         strcpy(classpath,"-Djava.class.path="); /*This tells jvm that it is getting the class path*/
         strcat(classpath,getenv("PATH"));
         strcat(classpath,";D:\\Projects\\RingRing\\MMSComposer;C:\\Progra~1\\j2sdk1~1.1_0\\lib");     //;C:\\Comverse\\MMS_SDK\\SDK\\lib\\mail.jar;C:\\Comverse\\MMS_SDK\\SDK\\lib\\activation.jar;C:\\Comverse\\MMS_SDK\\SDK\\lib\\mmspade.jar
         //------Set Options for virtual machine
         options[0].optionString = "-Djava.compiler=NONE"; //JIT compiler
         options[1].optionString = classpath;                                        //CLASSPATH
         //------Set argument structure components
         vm_args.options = options;
         vm_args.nOptions = 2;
         vm_args.ignoreUnrecognized = JNI_TRUE;
         vm_args.version = JNI_VERSION_1_4;
         /* Win32 version */
         HINSTANCE hVM = LoadLibrary("C:\\Program Files\\j2sdk1.4.1_01\\jre\\bin\\client\\jvm.dll");
         if (hVM == NULL){
              if(blog) oDebugLog->Printf("Can't load jvm.dll");
              return E_FAIL;
         if(blog) oDebugLog->Printf("jvm.dll loaded\n");
         LPFNDLLFUNC1 func = (LPFNDLLFUNC1)GetProcAddress(hVM, "JNI_CreateJavaVM");
         if(!func){
              if(blog)     oDebugLog->Printf("Can't get ProcAddress of JNI_CreateJavaVM");
              FreeLibrary(hVM);     hVM = NULL;
              return E_FAIL;
         if(blog)     oDebugLog->Printf("ProcAddress found");
         res = func(&jvm,(void**)&env,&vm_args);
         if (res < 0) {
    if(blog)     oDebugLog->Printf("Can't create JVM with JNI_CreateJavaVM %d\n",res);
    return E_FAIL;
         if(blog)     oDebugLog->Printf("JVM created");
         return HRv;
    //finding Comverse10 class:
    HRESULT CALLAS MMSComposer::InitializeJNI(void)
         HRESULT HRv=E_FAIL;
         DWORD T=0;
         try
              if(blog)     oDebugLog->Printf("\nInitializeJNI()");
              bJVM = FALSE;
              jni = new Java(oDebugLog);
              if(jni->CreateJavaVMdll()!=S_OK){
                   if(blog)     oDebugLog->Printf("CreateJavaVMdll() failed");     
                   return HRv;
              jclass jcls = jni->env->FindClass("Comverse10");
              if (jcls == 0) {
    if(blog)     oDebugLog->Printf("Can't find Comverse10 class");
                   jclass jcls2 = jni->env->FindClass("test");
                   if (jcls2 == 0) {
                        if(blog)     oDebugLog->Printf("Can't find test class");
                        return HRv;
                   if(blog)     oDebugLog->Printf("test class found %08x",jcls2);
    return HRv;
              if(blog)     oDebugLog->Printf("Comverse10 class found %08x",jcls);
              jmethodID mid = jni->env->GetMethodID(jcls , "<init>", "()V");
              if (mid == 0) {
                   if(blog)     oDebugLog->Printf("Can't find Comverse10() constructor");
    return HRv;
              if(blog)     oDebugLog->Printf("Comverse10() constructor found");
              jobject jobj = jni->env->NewObject(jcls,mid);
              if(jobj==0)
                   if(blog)     oDebugLog->Printf("Can't construct a Comverse10 object");
    return HRv;
              if(blog)     oDebugLog->Printf("Comverse10 object constucted");
              //Create Global reference, so java garbage collector won't delete it
              jni->jobj_comv = jni->env->NewGlobalRef(jobj);
              if(jni->jobj_comv==0)
                   if(blog)     oDebugLog->Printf("Can't create global reference to Comverse10 object");
    return HRv;
              if(blog)     oDebugLog->Printf("global reference to Comverse10 object %08x created",jni->jobj_comv);
              bJVM=TRUE;
              HRv=S_OK;
         }     catch( IDB * bgError ) { throw bgError->ErrorTrace("InitializeJNI::~InitializeJNI",HRv, 0, T); }
              catch(...) { throw IDB::NewErrorTrace("InitializeJNI::~InitializeJNI",HRv, 0, T ); }
              return HRv;

    >
    I would guess that the real problem is that that the
    exception you are catching is not in the class path
    that you are defining.Thanks jschell, that was indeed the case.
    I don't have the docs, but I would guess that
    FindClass() only returns null if an exception is
    thrown. And you are not checking for the exception.
    Which would tell you the problem.Ok, i'll remember that. But what with exceptions thrown in my java code, the documents say
    // jthrowable ExceptionOccurred(JNIEnv *env);
    // Determines if an exception is being thrown. The exception stays being thrown until either the native code calls ExceptionClear(), or the Java code handles the exception
    so, what if the java code throws an exception and catches it, will i be able to see that in my c++ code with ExceptionOccurred ?
    or
    should the java method be declared to throw the exception (and not catch it inside the method)
    Again, thank you for your help, it's greatly appreciated !

  • Where can we find the methods of the classes in OLE Interface

    Hi All,
    I am developing the code to download the file into multiple sheets of excel file.
    got many links and sample codes from this forum.
    but my doubt is where can we find the methods in applications.
    Example:
    add, cells, range etc are the methods in the object excel.application.
    I want to find all other methods in this same object.
    Please help me.
    thanks in adv.
    Eswar

    HE,
    see this demo program which is in DWDM
    *& Report  DEMOEXCELINTEGRATION                                        *
    INCLUDE rdemoexcelintegrationtop.
    DATA: control TYPE REF TO i_oi_ole_container_control.
    DATA: container TYPE REF TO cl_gui_custom_container.
    DATA: link_server TYPE REF TO i_oi_link_server.
    DATA: table_coll TYPE REF TO i_oi_table_collection.
    DATA: retcode TYPE t_oi_ret_string,
          document_type TYPE soi_document_type
                                           VALUE soi_doctype_excel_chart,
          document_format TYPE soi_document_type.
    DATA: doc_url TYPE t_url.
    DATA: usa_sales TYPE i VALUE 1000,
          europe_sales TYPE i VALUE 2000,
          japan_sales TYPE i VALUE 1000,
          asia_sales TYPE i VALUE 100,
          america_sales TYPE i VALUE 100,
          africa_sales TYPE i VALUE 100.
    DATA: total_sales TYPE i VALUE 0.
    DATA: BEGIN OF test_line, region(50), sales TYPE i, END OF test_line.
    DATA: test_table LIKE TABLE OF test_line.
    DATA: wa_test_table LIKE test_line.
          CLASS c_excel_document DEFINITION
    CLASS c_excel_document DEFINITION.
      PUBLIC SECTION.
        DATA: proxy TYPE REF TO i_oi_document_proxy.
        DATA: document_type TYPE soi_document_type.
        DATA: data_table TYPE sbdst_content,
              data_size TYPE i,
              doc_url TYPE t_url.
        METHODS: constructor
                  IMPORTING control TYPE REF TO i_oi_ole_container_control
                            document_type TYPE soi_document_type.
        METHODS: on_close_document
                  FOR EVENT on_close_document OF i_oi_document_proxy
                  IMPORTING document_proxy has_changed.
        METHODS: on_custom_event
                  FOR EVENT on_custom_event OF i_oi_document_proxy
                  IMPORTING document_proxy event_name param_count
                            param1 param2 param3.
        METHODS: create_document
                      IMPORTING open_inplace  TYPE c DEFAULT ' '
                      EXPORTING retcode TYPE t_oi_ret_string.
        METHODS: open_document
                      IMPORTING open_inplace  TYPE c DEFAULT ' '
                                open_readonly TYPE c DEFAULT ' '
                      EXPORTING retcode TYPE t_oi_ret_string.
        METHODS: open_document_url
                      IMPORTING open_inplace  TYPE c DEFAULT ' '
                                open_readonly TYPE c DEFAULT ' '
                                doc_url TYPE t_url DEFAULT ' '
                      EXPORTING retcode TYPE t_oi_ret_string.
        METHODS: retrieve_document
                     IMPORTING documents TYPE document_list
                     EXPORTING document_format TYPE soi_document_type
                               doc_url TYPE t_url.
        METHODS: close_document
                      IMPORTING do_save     TYPE c DEFAULT ' '
                      RETURNING value(retcode) TYPE t_oi_ret_string.
      PRIVATE SECTION.
        DATA: control  TYPE REF TO i_oi_ole_container_control.
    ENDCLASS.
    DATA: l_fcode LIKE fcode.
    DATA: document TYPE REF TO c_excel_document.
    DATA: bds_instance TYPE REF TO cl_bds_document_set.
    *&      Module  STATUS_0100  OUTPUT
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'MAIN0100'.
      SET TITLEBAR '001'.
      retcode = c_oi_errors=>ret_ok.
      IF control IS INITIAL.
        DATA: b_has_activex.
        CALL FUNCTION 'GUI_HAS_ACTIVEX'
             IMPORTING
                  return = b_has_activex.
        IF b_has_activex IS INITIAL. MESSAGE e007. ENDIF.
        CALL METHOD c_oi_ole_control_creator=>get_ole_container_control
                          IMPORTING control = control
                                    retcode = retcode.
        CALL METHOD c_oi_errors=>show_message
                                      EXPORTING type = 'E'.
        CREATE OBJECT container
                  EXPORTING container_name = 'CONTAINER'.
        CALL METHOD control->init_control
                            EXPORTING r3_application_name =
                                                  'Demo' "#EC NOTEXT
                                      inplace_enabled = 'X'
                                      inplace_scroll_documents = 'X'
                                      parent = container
                                      register_on_close_event = 'X'
                                      register_on_custom_event = 'X'
                            IMPORTING retcode = retcode.
        CALL METHOD c_oi_errors=>show_message
                                      EXPORTING type = 'E'.
        CALL METHOD control->get_link_server
                           IMPORTING link_server = link_server
                                     retcode = retcode.
        CALL METHOD c_oi_errors=>show_message
                                      EXPORTING type = 'E'.
        CALL METHOD link_server->start_link_server
                          IMPORTING retcode = retcode.
        CALL METHOD c_oi_errors=>show_message
                                      EXPORTING type = 'E'.
        CALL METHOD control->get_table_collection
                        IMPORTING table_collection = table_coll
                                  retcode = retcode.
        PERFORM refresh_sales.
        CREATE OBJECT document
                  EXPORTING control = control
                            document_type = document_type.
        CALL METHOD table_coll->add_table
                        EXPORTING table_name = 'SALES_IN'
                                  table_type = table_coll->table_type_input
                        IMPORTING retcode = retcode
                        CHANGING  data_table = test_table.
      ENDIF.
      IF bds_instance IS INITIAL.
        CREATE OBJECT bds_instance.
      ENDIF.
    ENDMODULE.                             " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    MODULE user_command_0100 INPUT.
      l_fcode = fcode.
      CLEAR fcode.
      CALL METHOD cl_gui_cfw=>dispatch.
      CASE l_fcode.
        WHEN 'EXIT'.                       "Zurück
          IF NOT document IS INITIAL.
            CALL METHOD document->close_document.
            FREE document.
          ENDIF.
          IF NOT link_server IS INITIAL.
            CALL METHOD link_server->stop_link_server
                                           IMPORTING retcode = retcode.
            FREE link_server.
          ENDIF.
          IF NOT table_coll IS INITIAL.
            FREE table_coll.
          ENDIF.
          IF NOT control IS INITIAL.
            CALL METHOD control->destroy_control
                                                IMPORTING retcode = retcode.
            FREE control.
          ENDIF.
          IF NOT bds_instance IS INITIAL.
            FREE bds_instance.
          ENDIF.
          LEAVE TO SCREEN 0.
        WHEN 'CREATE'.
          IF NOT control IS INITIAL.
            document->data_size = 0.
            CLEAR document->data_table.
            CALL METHOD document->create_document.
            CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
          ENDIF.
        WHEN 'SELECT'.
          IF NOT control IS INITIAL.
            DATA: documents TYPE document_list.
            DATA: descr TYPE document_descr.
            CLEAR documents.
            descr-document_name = 'Car Sales Chart'(do1).
            descr-document_id = 'DEMOEXCELCHART1'.
            APPEND descr TO documents.
            descr-document_name = 'Car Sales Chart 2'(do3).
            descr-document_id = 'DEMOEXCELCHART2'.
            APPEND descr TO documents.
            descr-document_name = 'Car Sales Sheet'(do2).
            descr-document_id = 'DEMOEXCELSHEET1'.
            APPEND descr TO documents.
            CLEAR doc_url.
            CALL METHOD document->retrieve_document
                        EXPORTING documents = documents
                        IMPORTING document_format = document_format
                                  doc_url = doc_url.
            IF NOT doc_url IS INITIAL.
              CALL METHOD document->close_document.
              CALL METHOD document->open_document_url
                                EXPORTING open_inplace = 'X'
                                          doc_url = doc_url
                                IMPORTING retcode = retcode.
              CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
            ELSE.
              MESSAGE e010.
            ENDIF.
          ENDIF.
        WHEN 'OPEN'.
          IF document->data_size NE 0.
            IF NOT control IS INITIAL.
              CALL METHOD document->open_document
                                IMPORTING retcode = retcode.
              CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
            ENDIF.
          ELSE.
            MESSAGE e005.
          ENDIF.
        WHEN 'INPLACE'.
          IF document->data_size NE 0.
            IF NOT control IS INITIAL.
              CALL METHOD document->open_document
                                EXPORTING open_inplace = 'X'
                                          open_readonly = 'X'
                                IMPORTING retcode = retcode.
              CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
            ENDIF.
          ELSE.
            MESSAGE e005.
          ENDIF.
        WHEN 'SAVEAS'.
          IF NOT document IS INITIAL AND NOT document->proxy IS INITIAL.
            CALL METHOD document->proxy->save_as
                              EXPORTING prompt_user = 'X'
                              IMPORTING retcode = retcode.
            CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
          ELSE.
            MESSAGE e000.
          ENDIF.
        WHEN 'CLOSE'.
          IF NOT document IS INITIAL.
            CALL METHOD document->close_document
                          EXPORTING do_save = 'X'.
            CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
          ELSE.
            MESSAGE e000.
          ENDIF.
        WHEN 'COPYLINK'.
          IF NOT link_server IS INITIAL.
            PERFORM refresh_sales.
            CALL METHOD link_server->execute_copy_link_dialog
                     IMPORTING retcode = retcode.
            CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
          ELSE.
            MESSAGE e004.
          ENDIF.
        WHEN 'REFRESH'.
          IF NOT link_server IS INITIAL.
            PERFORM refresh_sales.
          ELSE.
            MESSAGE e004.
          ENDIF.
          IF NOT document IS INITIAL AND NOT document->proxy IS INITIAL.
            CALL METHOD document->proxy->execute_macro
                          EXPORTING macro_string = 'R3StartupMacro'
                                    param_count = 1
                                    param1 = 10
                          IMPORTING retcode = retcode.
                         CHANGING  retvalue = usa_sales.
            CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
          ELSE.
            MESSAGE e000.
          ENDIF.
        WHEN 'PRINT'.
          IF NOT document IS INITIAL AND NOT document->proxy IS INITIAL.
            CALL METHOD document->proxy->print_document
                           EXPORTING prompt_user = 'X'
                           IMPORTING retcode = retcode.
            CALL METHOD c_oi_errors=>show_message EXPORTING type = 'E'.
          ELSE.
            MESSAGE e000.
          ENDIF.
      ENDCASE.
    ENDMODULE.                             " USER_COMMAND_0100  INPUT
    CLASS c_excel_document IMPLEMENTATION.
    CLASS c_excel_document IMPLEMENTATION.
      METHOD: constructor.
                 IMPORTING control TYPE REF TO i_oi_ole_container_control
                           document_type TYPE soi_document_type
        me->control = control.
        me->document_type = document_type.
      ENDMETHOD.
      METHOD create_document.
                    IMPORTING open_inplace  TYPE c DEFAULT ' '
                    RETURNING value(retcode) TYPE t_oi_ret_string.
        IF NOT proxy IS INITIAL.
          CALL METHOD me->close_document.
        ENDIF.
        CALL METHOD control->get_document_proxy
                 EXPORTING document_type = document_type
                 IMPORTING document_proxy = proxy
                           retcode = retcode.
        IF retcode NE c_oi_errors=>ret_ok.
          EXIT.
        ENDIF.
        CALL METHOD proxy->create_document
                            EXPORTING create_view_data = 'X'
                                      open_inplace = open_inplace
                            IMPORTING retcode = retcode.
        IF retcode NE c_oi_errors=>ret_ok.
          EXIT.
        ENDIF.
        SET HANDLER me->on_close_document FOR proxy.
        SET HANDLER me->on_custom_event FOR proxy.
      ENDMETHOD.
      METHOD open_document.
                    IMPORTING open_inplace  TYPE c DEFAULT ' '
                              open_readonly TYPE c DEFAULT ' '
                    RETURNING value(retcode) TYPE t_oi_ret_string.
        IF NOT proxy IS INITIAL.
          CALL METHOD me->close_document.
        ENDIF.
        CALL METHOD control->get_document_proxy
                 EXPORTING document_type = document_type
                 IMPORTING document_proxy = proxy
                           retcode = retcode.
        IF retcode NE c_oi_errors=>ret_ok.
          EXIT.
        ENDIF.
        CALL METHOD proxy->open_document_from_table
                               EXPORTING document_table = data_table
                                         document_size  = data_size
                                         open_inplace = open_inplace
                                         open_readonly = open_readonly
                               IMPORTING retcode = retcode.
        IF retcode NE c_oi_errors=>ret_ok.
          EXIT.
        ENDIF.
        SET HANDLER me->on_close_document FOR proxy.
        SET HANDLER me->on_custom_event FOR proxy.
        CALL METHOD proxy->update_document_links
                               EXPORTING update_manual_links = 'X'
                               IMPORTING retcode = retcode.
      ENDMETHOD.
      METHOD close_document.
                    IMPORTING do_save TYPE c DEFAULT ' '
                    RETURNING value(retcode) TYPE t_oi_ret_string.
        DATA: is_closed TYPE i, has_changed TYPE i.
        DATA: doc_url(256).
        IF NOT proxy IS INITIAL.
          CALL METHOD proxy->is_destroyed IMPORTING ret_value = is_closed.
          IF is_closed IS INITIAL.
            CALL METHOD proxy->close_document
                         EXPORTING do_save = do_save
                         IMPORTING has_changed = has_changed
                                   retcode = retcode.
            IF retcode NE c_oi_errors=>ret_ok.
              EXIT.
            ENDIF.
          ENDIF.
          IF NOT has_changed IS INITIAL.
            CALL METHOD proxy->save_document_to_table
                          IMPORTING retcode = retcode
                          CHANGING  document_table = data_table
                                    document_size = data_size.
            IF retcode NE c_oi_errors=>ret_ok.
              EXIT.
            ENDIF.
          ENDIF.
          CALL METHOD proxy->release_document
                                       IMPORTING retcode = retcode.
          SET HANDLER me->on_close_document FOR proxy ACTIVATION ' '.
          SET HANDLER me->on_custom_event FOR proxy ACTIVATION ' '.
        ELSE.
          retcode = c_oi_errors=>ret_document_not_open.
        ENDIF.
      ENDMETHOD.
      METHOD open_document_url.
                    IMPORTING open_inplace  TYPE c DEFAULT ' '
                              open_readonly TYPE c DEFAULT ' '
                              doc_url TYPE t_url DEFAULT ' '
                    RETURNING value(retcode) TYPE t_oi_ret_string.
        IF NOT proxy IS INITIAL.
          CALL METHOD me->close_document.
        ENDIF.
        CALL METHOD control->get_document_proxy
                 EXPORTING document_type = document_type
                 IMPORTING document_proxy = proxy
                           retcode = retcode.
        IF retcode NE c_oi_errors=>ret_ok.
          EXIT.
        ENDIF.
        me->doc_url = doc_url.
        CALL METHOD proxy->open_document
                               EXPORTING document_url = doc_url
                                         open_inplace = open_inplace
                                         open_readonly = open_readonly
                               IMPORTING retcode = retcode.
        IF retcode NE c_oi_errors=>ret_ok.
          EXIT.
        ENDIF.
      Document shall also be available in ITAB for respective operations:
        CALL METHOD proxy->save_document_to_table
                          IMPORTING retcode = retcode
                          CHANGING  document_table = data_table
                                    document_size = data_size.
        IF retcode NE c_oi_errors=>ret_ok.
          EXIT.
        ENDIF.
        SET HANDLER me->on_close_document FOR proxy.
        SET HANDLER me->on_custom_event FOR proxy.
        CALL METHOD proxy->update_document_links
                               EXPORTING update_manual_links = 'X'
                               IMPORTING retcode = retcode.
      ENDMETHOD.
      METHOD retrieve_document.
                 importing documents type document_list
                 exporting document_format type soi_document_format
                           doc_url type t_url.
    *----BDS-Data-Structures:--
    Tables and WAs:
        DATA: doc_signature TYPE sbdst_signature,
              wa_doc_signature LIKE LINE OF doc_signature,
              doc_components TYPE sbdst_components,
              wa_doc_components LIKE LINE OF doc_components,
              doc_properties TYPE sbdst_properties,
              wa_doc_properties LIKE LINE OF doc_properties,
              doc_uris TYPE sbdst_uri,
              wa_doc_uris LIKE LINE OF doc_uris.
    ID's:
        DATA: doc_classname TYPE sbdst_classname VALUE 'SOFFICEINTEGRATION',
              doc_classtype TYPE sbdst_classtype VALUE 'OT',
            doc_object_key TYPE sbdst_object_key VALUE 'SOFFICEINTEGRATION',
              doc_mimetype TYPE bapicompon-mimetype.
        DATA: field_desc TYPE TABLE OF rsvbfidesc.
        DATA: wa_field_desc TYPE rsvbfidesc.
        DATA: l_nr LIKE sy-tabix.
        CLEAR: field_desc, wa_field_desc.
        wa_field_desc-fieldnum = 1.
        wa_field_desc-display = 'X'.
        APPEND wa_field_desc TO field_desc.
        l_nr = 0.
        CALL FUNCTION 'RS_VALUES_BOX'
             EXPORTING
                  left_upper_col = 5
                  left_upper_row = 5
                  pagesize       = 10
                  title          = 'Select document'(sdc)
             IMPORTING
                  linenumber     = l_nr
             TABLES
                  field_desc     = field_desc
                  value_tab      = documents
             EXCEPTIONS
                  OTHERS         = 1.
        IF sy-subrc EQ 0 AND l_nr NE 0.
          READ TABLE documents INDEX l_nr INTO descr.
          IF sy-subrc EQ 0.
            CLEAR: wa_doc_signature, wa_doc_components, wa_doc_uris.
            CLEAR: doc_signature, doc_components, doc_uris.
            wa_doc_signature-prop_name = 'DESCRIPTION'.
            wa_doc_signature-prop_value = descr-document_id.
            APPEND wa_doc_signature TO doc_signature.
            CALL METHOD bds_instance->get_info
                          EXPORTING classname = doc_classname
                                    classtype = doc_classtype
                                    object_key = doc_object_key
                          CHANGING components = doc_components
                                   signature = doc_signature
                          EXCEPTIONS nothing_found = 1
                                     error_kpro = 2
                                     internal_error = 3
                                     parameter_error = 4
                                     not_authorized = 5
                                     not_allowed = 6.
            IF sy-subrc NE 0 AND sy-subrc NE 1.
              MESSAGE e016.
            ENDIF.
            IF sy-subrc = 1.
              MESSAGE e017.
            ENDIF.
            CALL METHOD bds_instance->get_with_url
                               EXPORTING classname = doc_classname
                                         classtype = doc_classtype
                                         object_key = doc_object_key
                               CHANGING uris = doc_uris
                                        signature = doc_signature
                          EXCEPTIONS nothing_found = 1
                                     error_kpro = 2
                                     internal_error = 3
                                     parameter_error = 4
                                     not_authorized = 5
                                     not_allowed = 6.
            IF sy-subrc NE 0 AND sy-subrc NE 1.
              MESSAGE e016.
            ENDIF.
            IF sy-subrc = 1.
              MESSAGE e017.
            ENDIF.
            READ TABLE doc_components INTO wa_doc_components INDEX 1.
            READ TABLE doc_uris INTO wa_doc_uris INDEX 1.
            doc_mimetype = wa_doc_components-mimetype.
            doc_url = wa_doc_uris-uri.
            CASE doc_mimetype.
              WHEN 'application/x-rtf' OR 'text/rtf'.
                document_format = soi_docformat_rtf.
              WHEN 'application/x-oleobject'.
                document_format = soi_docformat_compound.
              WHEN 'text/plain'.
                document_format = soi_docformat_text.
              WHEN OTHERS.
                document_format = soi_docformat_native.
            ENDCASE.
          ENDIF.
        ENDIF.
      ENDMETHOD.
      METHOD on_close_document.
                 FOR EVENT on_close_document OF c_oi_ole_container_control
                 IMPORTING document_proxy has_changed.
        DATA: answer, do_save.
        IF has_changed EQ 1.
          CALL FUNCTION 'POPUP_TO_CONFIRM'
               EXPORTING
                    titlebar              = 'Office Integration Demo'(oid)
                    text_question         = 'Save Document?'(sav)
                    display_cancel_button = ' '
               IMPORTING
                    answer                = answer.
          IF answer EQ '1'.
            do_save = 'X'.
          ELSE.
            do_save = ' '.
          ENDIF.
          CALL METHOD me->close_document
                        EXPORTING do_save = do_save.
          CALL METHOD c_oi_errors=>show_message
                                      EXPORTING type = 'E'.
        ENDIF.
      ENDMETHOD.
      METHOD on_custom_event.
                 FOR EVENT on_custom_event OF i_oi_document_proxy
                 IMPORTING document_proxy event_name param_count
                           param1 param2 param3.
        IF event_name EQ 'ON_SERIES_CHANGE'.
          CALL METHOD table_coll->get_table
                        EXPORTING table_name = 'SALES_IN'
                        IMPORTING retcode = retcode
                        CHANGING  data_table = test_table.
          CALL METHOD c_oi_errors=>show_message
                                      EXPORTING type = 'E'.
          CLEAR wa_test_table.
          READ TABLE test_table INTO wa_test_table INDEX 1.
          usa_sales = wa_test_table-sales.
          CLEAR wa_test_table.
          READ TABLE test_table INTO wa_test_table INDEX 2.
          europe_sales = wa_test_table-sales.
          CLEAR wa_test_table.
          READ TABLE test_table INTO wa_test_table INDEX 3.
          japan_sales = wa_test_table-sales.
          CLEAR wa_test_table.
          READ TABLE test_table INTO wa_test_table INDEX 4.
          asia_sales = wa_test_table-sales.
          CLEAR wa_test_table.
          READ TABLE test_table INTO wa_test_table INDEX 5.
          america_sales = wa_test_table-sales.
          CLEAR wa_test_table.
          READ TABLE test_table INTO wa_test_table INDEX 6.
          africa_sales = wa_test_table-sales.
          CLEAR wa_test_table.
        ENDIF.
        CALL METHOD control->set_focus.
      ENDMETHOD.
    ENDCLASS.
    FORM refresh_sales.
    FORM refresh_sales.
      DATA: BEGIN OF item_line,
                 region(60),
                 sales TYPE i,
                 date  TYPE d,
                 time  TYPE t,
                 weight TYPE f,
                 amount TYPE p DECIMALS 3,
                 id(10) TYPE n,
            END OF item_line.
      DATA: sales_table LIKE TABLE OF item_line.
      DATA: wa_sales_table LIKE item_line.
      DATA: fields_table TYPE TABLE OF rfc_fields.
      DATA: wa_fields_table TYPE rfc_fields.
      DATA: ind TYPE i.
      CALL FUNCTION 'DP_GET_FIELDS_FROM_TABLE'
           TABLES
                data   = sales_table
                fields = fields_table.
      READ TABLE fields_table INDEX 1 INTO wa_fields_table.
      wa_fields_table-fieldname = 'Region'."#EC NOTEXT
      MODIFY fields_table FROM wa_fields_table INDEX 1.
      CLEAR wa_fields_table.
      READ TABLE fields_table INDEX 2 INTO wa_fields_table.
      wa_fields_table-fieldname = 'Sales'. "#EC NOTEXT
      MODIFY fields_table FROM wa_fields_table INDEX 2.
      CLEAR: sales_table, wa_sales_table.
      wa_sales_table-region = 'USA'(usa).
      wa_sales_table-sales = usa_sales.
      APPEND wa_sales_table TO sales_table.
      CLEAR wa_sales_table.
      wa_sales_table-region = 'Europe'(eur).
      wa_sales_table-sales = europe_sales.
      APPEND wa_sales_table TO sales_table.
      CLEAR wa_sales_table.
      wa_sales_table-region = 'Japan'(jap).
      wa_sales_table-sales = japan_sales.
      APPEND wa_sales_table TO sales_table.
      CLEAR wa_sales_table.
      wa_sales_table-region = 'Asia'(asi).
      wa_sales_table-sales = asia_sales.
      APPEND wa_sales_table TO sales_table.
      CLEAR wa_sales_table.
      wa_sales_table-region = 'America'(ame).
      wa_sales_table-sales = america_sales.
      APPEND wa_sales_table TO sales_table.
      CLEAR wa_sales_table.
      wa_sales_table-region = 'Africa'(afr).
      wa_sales_table-sales = africa_sales.
      APPEND wa_sales_table TO sales_table.
      CLEAR wa_sales_table.
      LOOP AT sales_table INTO wa_sales_table.
        ind = sy-tabix.
        wa_sales_table-date = sy-datum + ind.
        wa_sales_table-time = sy-uzeit + ind.
        wa_sales_table-weight = 100000 * ind.
        wa_sales_table-amount = 11111 * ind.
        wa_sales_table-id = ind.
        MODIFY sales_table FROM wa_sales_table INDEX ind.
      ENDLOOP.
      CALL METHOD table_coll->add_table
                        EXPORTING table_name = 'SALES_OUT'
                                  table_type = table_coll->table_type_output
                        IMPORTING retcode = retcode
                        CHANGING  data_table = sales_table
                                  fields_table = fields_table.
      CALL METHOD link_server->add_table_item2
               EXPORTING item_name = 'Sales'    "#EC NOTEXT
                         item_title = 'Car Sales Figures'(sal)
               IMPORTING retcode = retcode
               CHANGING  data_table = sales_table
                         fields_table = fields_table.
      CALL METHOD link_server->add_string_item
               EXPORTING item_name   = 'ChartTitle'
                         item_title  = 'Chart Title'(ti0)
                         item_value  = 'Car Sales by Region'(ti1)
                         no_flush    = 'X'
               IMPORTING retcode = retcode.
      CALL METHOD link_server->add_string_item
               EXPORTING item_name   = 'ColumnTitle1'
                         item_title  = 'Column Title 1'(ti2)
                         item_value  = 'Region'(ti3)
                         no_flush    = 'X'
               IMPORTING retcode = retcode.
      CALL METHOD link_server->add_string_item
               EXPORTING item_name   = 'ColumnTitle2'
                         item_title  = 'Column Title 2'(ti4)
                         item_value  = 'Sold Cars'(ti5)
                         no_flush    = ' '
               IMPORTING retcode = retcode.
    ENDFORM.

  • Can not find class BPELFaultRecoveryContext in 11g

    I have a Java program that uses the class BPELFaultRecoveryContext below
    import com.collaxa.cube.engine.fp.BPELFaultRecoveryContext;
    which resides in the orabpel.jar file. I jar up the java program and put it in the $ORACLE_MIDDLEWARE_HOME/user_projects/domains/soa_domain/lib folder on the SOA server. When I run the bpel process, it will call this java class and now, when the java class runs, it said that it can't find this class BPELFaultRecoveryContext. I searched the server and the orabpel.jar file is there. It's in another directory though.
    The intereresting thing is in this java program, it uses the below classes and they are in the fabric-runtime.jar file. I do not include the fabric-runtime.jar file in the jar file with the java class but the java program is able to locate these 2 classes but not the one above.
    import oracle.integration.platform.faultpolicy.IFaultRecoveryContext;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryJavaClass;
    Do I need to include the orabpel.jar file in the jar file with the java class? Do you have any ideas? Thanks

    import the java class to the class path

Maybe you are looking for