Callable interface

Hi,
I have just spent 2 days trying to make sense out of the Callable interface and Future Object. I understand them in essence based on javadocs and online resources I found.
But, I still do not know how to achieve my requirement:
I have implemented Multithreading using Callable interface.
It returns an Object called ResultObject.
It can possibly throw an exception.
1.) I dont know how to access the returned object
2.) How to catch the exception.
thanks in advance
Vikas

Generally a Callable is intended to be executed asynchronously on a different thread. If you want to have access to the result then the facility that is responsible for executing the Callable must provide some means of doing that. The easiest thing for you to do is simply to use a FutureTask which does just that. Wrap the Callable in a FutureTask and use that for the asynchronous execution. You can then use FutureTask to see if it's completed and retrieve the result, blocking if necessary.
Also, if you're using an ExecutorService you should just pass the Callable to the submit(Callable) method and use the returned Future to get the result.

Similar Messages

  • Java.util.concurrent.Callable synchronized call method

    Hi all,
    I'm currently developing an algorithm that uses Callable Interface. I'd like to know when should I use synchronized in the Call() method signature.
    My scene is the following:
    Class Test invoke Task Class.
    The Task Class contains the following code:
                      ExecutorService execServ
                           =Executors.newCachedThreadPool();
                      CallableWorkerThread workers[]
                          =new CallableWorkerThread[numWorkers];
                      Future futures[]
                          =new Future[numWorkers];
                      for (int i = 0; i < numWorkers; i++) {
                           workers[i] = new CallableWorkerThread();
                             futures[i] = execServ.submit(workers);
    The CallableWorkerThread class implements Callable and overwrite it's Call() method.
    My doubt is about the following:
    Should I use this:
    public synchronized Object call() throws Exception {
            // Code to execute........
    }OR
    public Object call() throws Exception {
            // Code to execute........
    }Tks.

    Hi David, I thank you for your answer.
    My class CallableWorkerThread implements Callable Interface because I'm using submit method() from ExecutorService.
    In other words, when I use the instructionexecServ.submit(workers); the object workers must be a collection of Callable Objects.
    This is my Test_CallableWorkerThread:
    public class Test_CallableWorkerThread  {
    ExecutorService      execServ  = Executors.newCachedThreadPool();
    CallableWorkerThread      workers[] = new CallableWorkerThread[10];
    Future                futures[] = new Future[10];
    for (int i = 0; i < 10; i++) {
         workers[i] = new CallableWorkerThread();
         futures[i] = execServ.submit(workers);
    This is my CallableWorkerThread:
    public class CallableWorkerThread implements Callable {
         private Collection<MyObject> collectionOfMyObjects = null;
         private String threadName                   = null;
         private Connection conn                       = null;
         CallableWorkerThread(Collection<MyObject> collectionOfMyObjects, String threadName, Connection conn) {
                  this.collectionOfMyObjects = collectionOfMyObjects;
                  this.threadName = threadName;
                  this.conn = conn;
         public Object call() throws Exception {
              for (Iterator iter = collectionOfMyObjects.iterator(); iter.hasNext();) {
                   MyObject element = (MyObject) iter.next();
                   System.out.println(this.threadName + " is working with " + element.getName());
                   try {Thread.sleep((int)(Math.random() * 1000));
                   } catch (InterruptedException e) {}
                 return(threadName);
    }According to the code above, I'm using CachedThreadPool. I read the documentation about this and this method creates a thread pool that creates new threads as needed, but will reuse previously constructed threads when they are available.
    It's work fine, but until now I didn't undestand what is the real difference between using method with synchronized and without.
    Thanks for the help!

  • How to make a callable object daemon

    Hi Gurus,
    I have a class which implements Callable interface and I am using thread execution framework to execute this object. My requirement is to make this thread a daemon thread. I would like to know how can i do this because setDeamon(True) doesnt exist in Callable interface.
    Thanks

    If you know that a method from your object is being called in the thread which you want to make daemon, try
    Thread.currentThread().setDaemon(true);

  • Thread Callable call() method question

    i am using callable interface and i need to return from call() method before process gets over.
    basically i have infinite loop in call() method which gets data from streaming services,
    and once i format the data and send back to EDT to update UI constantly.
    i am using call() method because my call() (same as run() runnable) throws exception if there is any problem in receiving data.
    i don't care for return value from call(). i only care if there is any exception.
    if i don't do task.get().... then everything works fine, but then i dont get any executionException as well, (which i really care for)
    FutureTask<String> task = new FutureTask<String>(resParser);
    Thread thread= new Thread(task);
    thread.start();
    try{
        String result = task.get();
    }catch(ExecutionException e){
        e.printStackTrace();
    }catch(InterruptedException ex){
    }any solution ??
    Thanks

    You will need to re-consider your requirements. You either call get() and block the active thread, or you let the thread continue to run and don't call get().
    Your solution would be to catch the exception someplace else and feed the exception (or message) to wherever you need it. Why do you think you need to catch the exception right here (which is apparently in your EDT)? Why not catch it in the Thread's run method and deal with it there?

  • BizProcException: BPE027 Could not get an instance for 'Callable'-class

    Hi Experts...
    I have so much troubles with the implementation of the  "Java Class Atom"...
    My Scenario doesn't work because i don't have any idea how to use this atom.
    Can you help me to implement my Java class...i had read the documentation
    but the atom does not work...put here mi java class code
    package Hola;
    import java.util.regex.Pattern;
    import java.util.Enumeration;
    import com.sap.b1i.bizprocessor.*;
    import java.sql.Connection;
    public abstract class Hola implements Callable{
         public Hola(){ }
         public boolean call(java.util.Properties inProps, BizProcMessage inMsg, java.util.Properties outProps, BizProcMessage outMsg, java.sql.Connection conn, java.lang.String jobID) throws Exception{
           try{
                String ret = null;
                ret = "Call Response in outprop ";  
                outProps.setProperty("clsprop", ret);
                return false;
           catch (Exception e){
                throw new Exception("Error");
      public boolean isThreadSafe() {return false;}
      public boolean usesJDBC() {return false;}
      public void mustDestroy(){}
      public static void main(String[] args){
    I have the suspect of the error is on my code, but i'm not sure.
    Thank you very much.
    Best Regards.
    Enrique

    Well I found this under Control Center -> Development -> BPC Reference
    User defined Java-Classes for the Call-Atom via the 'Callable' interface
    com.sap.b1i.bizprocessor.Callable
    This interface must be implemented by classes intended to be called by the B1iBizProcessor via the Call-Atom. Instances of these classes are subject of internal pooling if they do not indicate after a usage that they should be destroyed. In order to be able to create them internally in a generic way, they have to implement a parameterless initializer !!!
    I just searched the entire BizStore for com.sap.b1i.bizprocessor.Callable but was unable to find it. 
    I also searched Google for com.sap.b1i.bizprocessor.Callable and it only come up with my posts.
    I also searched the SAP Partner Portal, and SAP SDN with no avail.
    Is this functionality only for internal SAP use?

  • B1if Call Java Class Callable

    Hi experts,
    I am trying to implement the Callable interface in my java class. so far I have created a java class which implements the Callable interface and simplay returns a propert via outprop.
    Then I created the jar file and copied it to WEB-INF/lib  Forlder. When I try to test it, I see that the process / message flow stops exact at the java class atom.
    by clicking the atom I see that the flow stops in the internal step also at the Call atom.
    I dont get any errors or what so ever. It just do nothing.
    Can anyone tell me what I am doing wrong and how to do it right ?
    Thanks
    Regards
    public class test
    implements Callable
         public boolean call(Properties inProps, BizProcMessage inMsg, Properties outProps, BizProcMessage outMsg, Connection iConn, String jobID)
                  throws Exception
                   try
                        String ret = null;
                        ret = "Call Response in outprop ";  
                        outProps.setProperty("clsprop", ret);
                         return false;
              catch (Exception e)
                    throw new Exception("something is wrong with the class!");
         public boolean isThreadSafe() {
              return false;
         public void mustDestroy() {
         public boolean usesJDBC() {
              return false;

    Hi Waqar,
    I have the same problem. I am interested if you get the answer.
    Good luck.

  • How to convert java .class file to .dll file

    hi,
    I got a problem, I have to convert my java .class file to .dll file. Microsoft VC++ program will invoke the converted .dll file.
    Is there any other possibility.
    I was confused.
    Cam any body help me. If you are having solution for the can you send to my [email protected] account.
    thanks,

    No, it is not possible to do what you are suggesting. Yes, you could produce a DLL that wraps the JVM and loads your java class exposing a C and/or C++ callable interface, but that is a lot to go through unless your class is VERY complex. Otherwise, you might want to just create and maintain two implementations.

  • How to convert .class file to .dll file

    hi,
    I got a problem, I have to convert my java .class file to .dll file. Microsoft VC++ program will invoke the converted .dll file.
    Is there any other possibility.
    I was confused.
    Cam any body help me. If you are having solution for the can you send to my [email protected] account.
    thanks,

    No, it is not possible to do what you are suggesting. Yes, you could produce a DLL that wraps the JVM and loads your java class exposing a C and/or C++ callable interface, but that is a lot to go through unless your class is VERY complex. Otherwise, you might want to just create and maintain two implementations.

  • Using ExecutorService class from java.util.concurrent package

    Dear java programmers,
    I have a question regarding the ExecutorService class from java.util.concurrent package.
    I want to parse hundreds of files and for this purpose I'm implementing a thread pool. The way I use the ExecutorService class is summarized below:
    ExecutorService executor = Executors.newFixedThreadPool(10);
            for (int i = 0; i < 1000; i++){
                System.out.println("Parsing file No "+i);
                executor.submit(new Dock(i));
            executor.shutdown();
            try {
                executor.awaitTermination(30, TimeUnit.SECONDS);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            executor.shutdownNow();However, the code snippet above creates all the 1000 threads (Dock objects) at once and loads them to the executor, and thus I'm worrying about memory leak. I haven't tested it on 1000 files yet but just on 50 small ones, and even if the program prints out "Parsing file No "+i 50 times at once, it executes normally the threads in the background.
    I guess the write way would be to keep the number of active/idle threads in the executor constant (lets say 20 if the thread pool's size is 10) and submit a new one whenever a thread has been finished or terminated. But for this to happen the program should be notified someway whenever a thread is done. Can anybody help me do that?
    thanks in advance,
    Tom

    Ok I found a feasible solution myself although I'm not sure if this is the optimum.
    Here's what I did:
            ExecutorService executor = Executors.newFixedThreadPool(10);
            Future<String> future0, future1, future2, future3, future4, future5, future6, future7, future8, future9;
            Future[] futureArray = {future0 = null, future1 = null, future2 = null, future3 = null, future4 = null, future5 = null,
            future6 = null, future7 = null, future8 = null, future9 = null};
            for (int i = 0; i < 10; i++){
                futureArray[i] = executor.submit(new Dock(i));
            }I created the ExecutorService object which encapsulates the thread pool and then created 10 Future objects (java.util.concurrent.Future) and added them into an Array.
    For java.util.concurrent.Future and Callable Interface usage refer to:
    [http://www.swingwiki.org/best:use_worker_thread_for_long_operations]
    [http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter10/concurrencyTools.html]
    I used a Future[] Array to make the code neater. So after that I submitted -and in this way filled up- the first 10 threads to the thread pool.
            int i = 9;
            while (i < 1000){
                for (int j = 0; j < 10; j++){
                    if (futureArray[j].isDone() && i < 999){
                        try{
                            i++;
                            futureArray[j] = executor.submit(new Dock(i));
                        } catch (ExecutionException ex) {
                            ex.printStackTrace();
                        } catch (InterruptedException ex) {
                            ex.printStackTrace();
                try {
                    Thread.sleep(100); // wait a while
                } catch(InterruptedException iex) { /* ignore */ }
            executor.shutdown();
            try {
                executor.awaitTermination(60, TimeUnit.SECONDS);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            executor.shutdownNow();
        }Each of the future[0-9] objects represents a thread in the thread pool. So essentially I'm check which of these 10 threads has been finished (using the java.util.concurrent.Future.isDone() method) and if yes I replenish that empty future[0-9] object with a new one.

  • Use Open Directory for intranet web acces

    Is it possible to tap in to Open Directory user information from other services than those build into the server? And that way use the Open Directory authentication for our own home-made service?
    We plan to setup an intranet on our OS X 10.6 server. We're still not sure whether to use one of the popular Open Source cms/portal platforms such as Drupal or maybe even WordPress.
    1. I would like to use the users accounts in our Open Directory to authenticate to the intranet. Is that possible in any way?
    2. Or does anyone know of a way to modify e.g. the build in blog function and integrate that with another system such as Drupal or WordPress?
    I'm guessing there are blocks of code in the blog that handle user authentication. And if I keep them where they are on the server and include them in other Drupal files, it may be possible? Is the build in blog build on an open source system like some of the other services on Mac OS X server? A system I can read about anywhere?
    +Note: The build in blog or wiki service does not match our needs for an intranet. We need to customize it a lot to make i suit our needs.+
    3. Plan B could be to export our 100 users and passwords from Open Directory and import them in the intranet system. But as far as I know it's impossible to export the passwords. Right?
    +New users would then have to be added to both Open Directory and the separate intranet system in the future. That would be okay for working but not perfect Plan B.+

    ryanowich wrote:
    Is it possible to tap in to Open Directory user information from other services than those build into the server?
    Yes.
    And that way use the Open Directory authentication for our own home-made service?
    Sure. I have HP OpenVMS systems that are authenticating to Mac OS X Server boxes. LDAP has a callable interface for applications written in most any active programming language, and many packages already have LDAP support.
    We plan to setup an intranet on our OS X 10.6 server. We're still not sure whether to use one of the popular Open Source cms/portal platforms such as Drupal or maybe even WordPress.
    You need to narrow your requirements and your ideas somewhat, and work toward a list of features.
    I have some discussions posted of what I went through when I ended up picking Drupal.
    1. I would like to use the users accounts in our Open Directory to authenticate to the intranet. Is that possible in any way?
    Network servers (Apache, DHCP, etc) can authenticate to LDAP, but (once granted access via DHCP and RADIUS, or analogous) clients don't usually further authenticate.
    Within Drupal, the [Drupal|http://drupal.org] module [ldapauth|http://drupal.org/node/118092] would be worth a test. That's an available connection into LDAP. (Haven't prototyped that module, though.)
    2. Or does anyone know of a way to modify e.g. the build in blog function and integrate that with another system such as Drupal or WordPress?
    You're apparently not familiar with Drupal. You might want to learn more about it, and particularly its extensibility. Drupal can be connected to some refrigerators, if you were inclined to do so.
    I'm guessing there are blocks of code in the blog that handle user authentication. And if I keep them where they are on the server and include them in other Drupal files, it may be possible? Is the build in blog build on an open source system like some of the other services on Mac OS X server? A system I can read about anywhere?
    Including random blocks of code isn't a strategy for success. Understanding the basics of how the pieces fit together tends to be a better strategy. For Drupal, there's always the [Drupal documentation|http://drupal.org/documentation], or the available books on the CMS. Or you can call in somebody that's done this stuff.
    +Note: The build in blog or wiki service does not match our needs for an intranet. We need to customize it a lot to make i suit our needs.+
    The built-in services are limited, yes. I've been running Drupal on Mac OS X Server for years now.
    3. Plan B could be to export our 100 users and passwords from Open Directory and import them in the intranet system. But as far as I know it's impossible to export the passwords. Right?
    I would sincerely hope you don't get the passwords out of your authentication system. That would be bad. Cleartext passwords are bad news. You don't want that ability.
    +New users would then have to be added to both Open Directory and the separate intranet system in the future. That would be okay for working but not perfect Plan B.+
    That would be a hassle.
    And I've tested with Wordpress on Mac OS X Server, but haven't deployed it in production. I'll leave discussions of its features and capabilities to others. That written, you might try the [Wordpress web site|http://Wordpress.org], as I'd expect there would be discussions of LDAP there.
    I'd suggest determining your requirements, otherwise you're going to flail around given the numbers of options an alternatives here. If you have your requirements, then you have a framework to pick your tools. [Here is what I looked at when I picked Drupal|http://labs.hoffmanlabs.com/node/100].

  • Future.get and the event despatch thread blocking

    neeeyaaarghhhh
    been tying myself in knots thinking about this
    Following one of the java tech tips I've been using Callable and Future objects when I want to return a result from a task, in my case it's usually some file processing
    So I have a file chooser gui, I select a file and launch my Callable and await the result in Future.get...
    Now the problem is... Future.get I understand blocks the calling thread until the computation / work in the Callable is done and the result returned. In this case the blocked thread will be the event despatch thread... which causes problems as during my file reading I have a JProgressBar running and updating. Well at least I did, now it doesn't show up at all as all the updates to the JProgressBar via invokeLater are queued (as event despatch thread is blocked) until after the work thread has finished
    How do I launch a Callable, await the result and have some limited gui activity as the task progresses? The only solution I've found is to have the ProgressBar in a modal dialog, to block out the rest of the gui like this whilst I do the work in the event despatch thread (and drop the idea of threading altogether)
    Is my mental modal of how worker threads should spin off from the event thread flawed or am I just missing some 1 line command?

    In the situation of updating the gui, you usually want to pass some sort of callback object to the asynchronous code and have that callback method run on the gui event thread.
    public class GuiClass {
    public void handleResult(Object data);
    public void startTask() {
      threadpool.execute(new Runnable() {
        public void run() {
          // ... do asynch work ...
          final Object myResult = ...;
          SwingUtilities.invokeLater(new Runnable() {
            public void run() {
              handleResult(myResult);
    }In this code, the startTask method is called on the gui thread. it starts some async work on the threadpool. when finished, the asynch task queues the result to be handled back on the gui thread. the handleResult method is called later on the gui thread with the final result. thus, no blocking of the gui thread.
    The Callable interface is great for when the invoking thread needs to wait for a result, but you pretty much never want to do this with the gui thread.

  • Converting .class file to .dll file

    Hi
    Can any body tell me what is the procedure for converting .class file to .dll(windows) file.
    Thanks,
    latif

    One way, You could produce a DLL that wraps the JVM and loads your java class exposing a C and/or C++ callable interface, but that is a lot to go through.
    Otherwise, if you are thinking of using Java class for .net applications you can
    use IKVM.NET to convert Java class to .NET dll. For this you can refer to:
    http://www.ikvm.net/userguide/tutorial.html

  • B1if Call Java Class

    I am attempting to call a java class using the Call Java Class atom. 
    Java Class Name: full name of the java class to be called (boldjar must be available in the B1i base pathbold)
    Where is the B1i base path?
    I have created a simple java class the implements Callable that simply returns 1.
    The exception I get com.sap.b1i.xcellerator.XcelleratorException: XCE001 Nested exception: com.sap.b1i.bizprocessor.BizProcException: BPE027 Could not get an instance for 'Callable'-class
    I have pasted the jar file in just about every path I can think of and still get this exception.
    Does anyone have a simple example of what the class should look like?  The callable interface only has a single function named call which does not take parameters.  How do we create a class that accepts parameters?

    Well I found this under Control Center -> Development -> BPC Reference
    User defined Java-Classes for the Call-Atom via the 'Callable' interface
    com.sap.b1i.bizprocessor.Callable
    This interface must be implemented by classes intended to be called by the B1iBizProcessor via the Call-Atom. Instances of these classes are subject of internal pooling if they do not indicate after a usage that they should be destroyed. In order to be able to create them internally in a generic way, they have to implement a parameterless initializer !!!
    I just searched the entire BizStore for com.sap.b1i.bizprocessor.Callable but was unable to find it. 
    I also searched Google for com.sap.b1i.bizprocessor.Callable and it only come up with my posts.
    I also searched the SAP Partner Portal, and SAP SDN with no avail.
    Is this functionality only for internal SAP use?

  • Error while creating a callable object - User Interface

    Hello,
    When i'm trying to create a callable object - User Interface in the guided procedure design time. i'm getting an error. An internal server error. This is happening while i'm trying to create a guided procedure with webdynpro's.
    Is there any body who allready had somthing like this.
    Greetings
    Kurt

    Hi Raja Akella,
    I allready had the roles and my portal version is upgraded until SP8 and all the possible patches.
    I get an internal server error when i want to create a callable object. specially when i want to create a webdynpro ( ABAP / JAVA).
    In the visual administrator i get the following  errors.
    <b>Error 1</b>
    Exception occured during processing of a Web Dynpro application: "com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.".
    [EXCEPTION]
    com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:640)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponentInternal(IWDApplicationInfo.java:286)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponent(IWDApplicationInfo.java:270)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.addWdappsElement(COConfigWDApp.java:646)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readWebDynproApps(COConfigWDApp.java:631)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readApplications(COConfigWDApp.java:308)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalCOConfigWDApp.readApplications(InternalCOConfigWDApp.java:190)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.initCreate(VSelect.java:306)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.onPlugFromDispatch(VSelect.java:174)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalVSelect.wdInvokeEventHandler(InternalVSelect.java:168)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:826)
         at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.navigate(ClientComponent.java:873)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doNavigation(WindowPhaseModel.java:498)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:144)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:711)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:665)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:232)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:178)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLPersistence.doReadVMO(XMLPersistence.java:126)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.readVMO(RepositoryPersistence.java:356)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.doFindRepositoryObject(RepositoryPersistence.java:598)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.findRepositoryObject(RepositoryPersistence.java:170)
         at com.sap.tc.webdynpro.repository.model.Repository.findRepositoryObjectInternal(Repository.java:590)
         at com.sap.tc.webdynpro.repository.model.RepositoryObjectRelation$XMLGuidWrapper.getModelObject(RepositoryObjectRelation.java:462)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.getCurrentLayerObject(RepositoryPersistence.java:702)
         at com.sap.tc.webdynpro.repository.model.Repository.getCurrentLayerObject(Repository.java:1483)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.doMergeInheritedTarget(NonSharedRelationToOne.java:85)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.mergeInheritedTargets(NonSharedRelationToOne.java:49)
         at com.sap.tc.webdynpro.repository.model.RelationToOne.getTarget(RelationToOne.java:93)
         at com.sap.tc.webdynpro.repository.model.AbstractRepositoryModelClass.getRelatedModelObject(AbstractRepositoryModelClass.java:234)
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:636)
         ... 39 more
    Caused by: com.sap.engine.lib.xml.parser.NestedSAXParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)(:main:, row=1, col=491) -> com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:148)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:166)
         ... 52 more
    Caused by: com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.XMLParser.scanAttList(XMLParser.java:1566)
         at com.sap.engine.lib.xml.parser.XMLParser.scanElement(XMLParser.java:1687)
         at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2792)
         at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:227)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:141)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:156)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:259)
         at com.sap.engine.lib.xml.parser.Parser.parseWithoutSchemaValidationProcessing(Parser.java:278)
         at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:340)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:125)
         ... 53 more
    <b>error 2</b>
    Processing HTTP request to servlet [dispatcher] finished with error. The error is: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:640)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponentInternal(IWDApplicationInfo.java:286)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponent(IWDApplicationInfo.java:270)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.addWdappsElement(COConfigWDApp.java:646)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readWebDynproApps(COConfigWDApp.java:631)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readApplications(COConfigWDApp.java:308)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalCOConfigWDApp.readApplications(InternalCOConfigWDApp.java:190)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.initCreate(VSelect.java:306)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.onPlugFromDispatch(VSelect.java:174)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalVSelect.wdInvokeEventHandler(InternalVSelect.java:168)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:826)
         at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.navigate(ClientComponent.java:873)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doNavigation(WindowPhaseModel.java:498)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:144)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:711)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:665)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:232)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:178)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLPersistence.doReadVMO(XMLPersistence.java:126)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.readVMO(RepositoryPersistence.java:356)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.doFindRepositoryObject(RepositoryPersistence.java:598)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.findRepositoryObject(RepositoryPersistence.java:170)
         at com.sap.tc.webdynpro.repository.model.Repository.findRepositoryObjectInternal(Repository.java:590)
         at com.sap.tc.webdynpro.repository.model.RepositoryObjectRelation$XMLGuidWrapper.getModelObject(RepositoryObjectRelation.java:462)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.getCurrentLayerObject(RepositoryPersistence.java:702)
         at com.sap.tc.webdynpro.repository.model.Repository.getCurrentLayerObject(Repository.java:1483)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.doMergeInheritedTarget(NonSharedRelationToOne.java:85)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.mergeInheritedTargets(NonSharedRelationToOne.java:49)
         at com.sap.tc.webdynpro.repository.model.RelationToOne.getTarget(RelationToOne.java:93)
         at com.sap.tc.webdynpro.repository.model.AbstractRepositoryModelClass.getRelatedModelObject(AbstractRepositoryModelClass.java:234)
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:636)
         ... 39 more
    Caused by: com.sap.engine.lib.xml.parser.NestedSAXParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)(:main:, row=1, col=491) -> com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:148)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:166)
         ... 52 more
    Caused by: com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.XMLParser.scanAttList(XMLParser.java:1566)
         at com.sap.engine.lib.xml.parser.XMLParser.scanElement(XMLParser.java:1687)
         at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2792)
         at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:227)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:141)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:156)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:259)
         at com.sap.engine.lib.xml.parser.Parser.parseWithoutSchemaValidationProcessing(Parser.java:278)
         at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:340)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:125)
         ... 53 more
    <b>error 3</b>
    Processing HTTP request to servlet [dispatcher] finished with error.
    The error is: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
    Exception id: [00505691431B006F0000003E00000FE800041B45B87F7617]
    thanks in advance
    Kurt

  • Error testing Web Dynpro Callable Object (GP Interface)

    With reference to thread:
    Interactive form as  Callable object error on testing the object.
    FYI, I'm running NW04s, EP 7.0 SPS 13, JDK 1.4.2_14, Unix OS
    Hi All,
    I have created a Web Dynpro App with a Adobe Form as the frontend. I have included the caf/eu/gp/api as a DC and implemented the IGPWebDynproCO interface. Next I created a Web Dynpro Callable object in GP and ran a test and received the following error:
    Result: Technical Exception
    Details: Could not create web dynpro callable object component
    Output Parameters
    Callable object implementation did not return  output parameters
    Can anyone help me resolve this? Do I have to make a manual entry in the HOST file? If so, what is that entry? Are there alternatives?
    Thanks
    Kunal.

    Hi,
    For creating WD callable object you need to add following three DC in your WD DC project.
    In the Web Dynpro Explorer of the Web Dynpro Perspective, expand the node DC MetaData -> DC Definition, and select Used DCs.
    a.      To create a DC dependency, open the context menu and choose Add Used DC.
      b.      Select Local Development  -> SAP-EU  -> caf/eu/gp/api/wd  -> DC MetaData  -> Public Parts  -> GPWebDynproCO. For Dependency Type, select Build Time, Design Time, and Run Time. Choose weak from the dropdown list.
      c.      Repeat the previous step to define a dependency to DCs SAP-EU-> caf/eu/gp/api (public part external) and SAP-JEE -> com.sap.security.api.sda (public part default).
    You need to do one more thing like bellow.
    Select your Web Dynpro project and open its context menu. Choose Properties.
    1. Choose Web Dynpro References -> Library References.
    2.  Add a reference for library caf/eu/gp/api.
    I think this will help you.
    Thanks
    Chandan

Maybe you are looking for