Help needed,Doubt regarding AccessController.doPrivileged()  usage

Hi All,
I am trying understand the basics of java security and AccessController.doPrivileged() usage
i started with a sample program
import java.security.AccessController;
import java.security.PrivilegedAction;
public class AccessSystemProperty {
   public static void main(String[] args) {
         System.out.println(System.getSecurityManager());
        AccessController.doPrivileged(
          new PrivilegedAction<Boolean>(){
             public Boolean run(){
                  System.out.println(System.getProperty("java.home"));
                  return Boolean.TRUE;
}if i try to run above code using default security manage i am getting AccessControlException
My stacktrace is
C:\>java -Djava.security.manager AccessSystemProperty
java.lang.SecurityManager@923e30
Exception in thread "main" java.security.AccessControlException: access denied (
java.util.PropertyPermission java.home read)
        at java.security.AccessControlContext.checkPermission(Unknown Source)
        at java.security.AccessController.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
        at java.lang.System.getProperty(Unknown Source)
        at AccessSystemProperty$1.run(AccessSystemProperty.java:9)
        at AccessSystemProperty$1.run(AccessSystemProperty.java:8)
        at java.security.AccessController.doPrivileged(Native Method)
        at AccessSystemProperty.main(AccessSystemProperty.java:6)from one other forum , i saw one comment
"When you use AccessController.doPrivileged to invoke those operations, the operation is executed with all the rights(permissions) of your protection domain. Hence if your code has enough rights only then it could execute those operations."
http://stackoverflow.com/questions/2233761/when-should-accesscontroller-doprivileged-be-used
What i understood from above is ,if we try to access system property from AccessController.doPrivileged() it should work ,Please correct me .. i think i am wrong ..
Kindly help me to get a clear picture of
1)when we need to use AccessController.doPrivileged() ?.(if SecurityManager is present we use AccessController.doPrivileged why this is failing in above example )
2) what is the real advantage we are getting by using AccessController and PrivilegedAction?.
3) Do we need custom policy file for above example to work ?
Thanks,
Paul

Finally i got an answer.Pls find the Detailed explanation from Rob.
http://stackoverflow.com/questions/8703234/accesscontroller-usage

Similar Messages

  • Help Needed-Doubt in Outbound Plug Delegation

    Hi Experts,
    We had a requirement to create a view for displaying opportunities and provide navigation to the same from the view.
    We were getting exceptions for incorrect implement and we solved it using the delegation concept.
    Doubt:
    In our Z component window we have Outbound Plugs namely navigate_display,navigate_create and navigate_edit.
    But in our component usage we are using BT111M_OPPT component which has an OP DOCFLOW that need to be delegated as well for proper navigations to happen. The OPs of  BT111M_OPPT navigate_display and navigate_create has been delegated to OPs navigate_display and navigate_create of our Z component window respectively.
    Since we do not have a DOCFLOW OP in our Z component, is it correct if we delegate it to an available OP(say,navigate_display -  this has been currently done and it is working fine now) or should we create an OP and den fire DOCFLOW OP within the same in our z component window?
    Any pointers would be highly appreciated.

    Hi,
    Thanks for the reply.
    My doubt is now about the flow of the firing.
    While using navigational link concept,it just finds source and target as defined and navigates accordingly...but in this case
    i am unable to arrive at such a conclusion.
    My Z component had OPs in window : A,B,C.
    I embedd a std. component in my z component. Std. component has window OP D.
    I delegate the window OP of the std. component(D) to my Z component window OP(A).
    Which OPs should be triggered within D and A(param iv_outbound_plug value to be passed to the fire method)?
    So what would be the flow of the firing in two cases : 1. If i am navigating to the embedded view ?
    2. If i navigate back to z component view?
    Like i am not clear about the basic flow concept on the firing of OP of window and so i am confused about the usage.
    Please help if you knwo any link where i can get an idea about the same.
    I searched sdn but not to much avail.
    Thanks
    Swapna

  • Urgent help needed pls regarding LOGO

    hello friends this is sudhakar . i really need help
    pls urgent
    i wrote scjp 5.0 certification in august and cleared succesfully
    i got all certificates but for logo i have to send the mail which cost me around 620/- rupess to them. but,
    can u any one tell how can v say to sun pupil tat i got all my cetificaties and i need the logo for my resume
    i heard we can do with online in www.sun.com only so can u help me out pls it is urgent.....

    http://www.sun.com/training/certification/faq/index.html#logos
    This part should be relevant to you -
    All customers that reside outside US and Canada: Once you have successfully passed one of our Java platform exams, a certification kit will be mailed to you that includes a Sun Logo Agreement. Please sign the agreement and mail it back to the address supplied. Depending from which country you mail the agreement, it may take up to month for you to receive the logo. We are currently working to provide an online logo for our International customers.
    This means you send the mail to them or wait for them to go online (which might mean months).

  • Information needed with regards HdrmSdk Webservice Usage

    Hi All,
    I'm a newbie to this forums im'nt sre whether if this is the right place where i post my query. My manager had given me a new task in devoloping a offline java web application through which can enable me to copy an existing version available in Hyperion DRM to a new one and he's instrested in setting Status of the new version to "finalized" after the copy. Therefore as a prototype to demostrate this functionality i started with HdrmSdk bundle and was able to copy an exisiting version to a new one from the method com.oracle.drm.examples.HdrmScriptSample.copyVersion(String abbEv) method.
    However, in order to accomplish my next task i have slightly changed the copyVersion method to something as stated below
    private void copyVersion(String newVersionName) throws RemoteException, IOException{
    TRemVersion version = hdrmIf.getVersionMgr().versionByAbbrev(getSessionId(), newVersionName);
    if (version != null){
    deleteVersion(newVersionName);
    TRemVersion ver =
    hdrmIf.getVersionMgr().copyVersion(getSessionId(), getVersionName(), newVersionName, newVersionName, false,
    false, false);
    ver.setStatus(Tmdm_VersionStatus.vsFinalized);
    //now commit the verison
    saveVersion(newVersionName);
    logger.info("Created new copied Version: " + newVersionName);
    private void saveVersion(String versionName) throws RemoteException, IOException
    logger.info("Start Job to save Version: " + versionName);
    TRemASyncJobID job = hdrmIf.getVersionMgr().startSaveVersionJob(getSessionId(), versionName);
    job.setMachineName(getMachinesMAC());
    boolean isFinish = false;
    while (isFinish == false)
    Tmdm_JobStatus jobStatus = hdrmIf.getJobMgr().checkJobStatus(job);
    if (jobStatus.equals(Tmdm_JobStatus.jsDone))
    isFinish = true;
    logger.info("Version: " + versionName + " saved");
    which as expected is not performing any changes to the version status in the targetted version(new version) as we were currently trying to modify the marshalled object ws client. Can someone here guide me through the correct process or point me to the helpful webservice related documentation(apart from reglar api docs we get with the SDK) or correct me if it practially not possible with the WS api. It'd be of great help.
    Thanks in advance
    Best Regards,
    Rahul Sharma

    )Updating firmware erases all content (this is clearly stated in the firmware info)
    2) yes, that is indeed possible

  • Help needed regards the usage of STL.....with CC

    Hi All,
    I am relatively new to SOLARIS. I am trying to figure out the options for using the STL components in the project.
    The project needs to be compiled with both CC ang g++, should support both SOLARIS and LINUX systems. That's why i am going for STL components rather than using the RW-Components of Tools.h++.
    I have the following doubts regards the usage of STL.
    CC provides the -library option to link the libraries we require.
    The following is what i understood from the documentation:
    No ( -library ) option provides - default libraries included -lCstd -lCrun -lm -lw -lcx -lc+
    -library=iostream+ - libraries included -liostream -lCstd -lCrun -lm -lw -lcx -lc+
    -library=iostream,no%Crun+ - libraries included -liostream -lCstd -lm -lw -lcx -lc+
    -library=stlport4+ - libraries included -lstlport4 -lCrun -lm -lw -lcx -lc+
    -library=iostream,no%Cstd+ - Invalid combination, some header files missing [[ *iostream, sstream* ]]
    When we try to make a new project, which of the following is recommended?
    #! - Use libCstd suppplied along with solaris package.
    When solaris makes a new release, is it always guaranteed that project is compatible with new libCstd ? (Is there a backward compatibility?)
    The STL components which can be used in the project are limited. i.e we can use only those that come along with libCstd.....right?
    Might not be compatible with other c++ compilers. ( Not compatible with g++ ) Right?
    #2 - Use libCStd along with libiostream
    Can we use STL (supported by libCstd ) + Classic-iostreams and still have the backward-compatibility?
    Compatible with other C++ compilers....provided care has been taken of the CC STL Specializations. ( Compatible with g++ ) Right?
    #3 - Use stlport4. Is it stable and backward-compatible ?
    We can exploit usage of STL to the maximum.
    Is it guranteed that the project (using -library=stlport4 ) will be backward compatible ?
    Can the SunStudio (ORACLE) organization gurantee that stlport will take care of the changes in the CPP standards ?
    i.e Is it guranteed that STLPORT and SUN-STUDIO packages will always be in sync?
    Among the above three which is preferred method to go ensuring stability and backward-compatibility.
    Thanks in advance.
    Cheers,
    Sreekar
    Edited by: 855323 on 20-Oct-2011 04:04
    Edited by: 855323 on 20-Oct-2011 04:04
    Edited by: 855323 on 20-Oct-2011 04:06

    In general, you don't need any options to use the C++ Standard Library (which includes what is sometimes loosely called the "STL"). Consider this toy program:
    // file vec.cc
    #include <vector>
    #include <iostream>
    int main()
        std::vector<int> vi(10);
        vi[1] = 1;
        std::cout << "vi[1]=" << vi[1] << '\n';
    }You can compile and run the program as either
    CC  vec.cc && a.out
    g++ vec.cc && a.outWith CC, by default you get the original libCstd. You use the -library option to select STLport or (on or selected versions of Solaris) Apache stdcxx instead. With g++, you just get the g++ library libstdc++, which should be suitable for all purposes.
    For a discussion of which library to select with CC, see this thread:
    Differnce between LibCstd and LibStlport
    The optional libiostream is provided to provide support for programs written for the very old version of iostreams that was provided with the original AT&T Cfront compiler in the 1980's and early 1990's. There is usually no reason to use this obsolete library with code written after 1998.
    The Solaris libCstd.so.1 (and libCrun.so.1) is always compatible with various releases of Studio, with one caveat: Each Studio release specifies the minimum patch level of Solaris libraries that is required to run programs created by the compiler. Any newer version of the library is guaranteed to be compatible. Thus, it is always safe to update the library, and an update might be required when using binaries created by a newer compiler.
    A version of the STLport library ships with the compiler. C++ binaries created by an older compiler that link to libstlport.so.1 should still work when linked into a program created by a newer compiler. Use of the static libstlport.a is generally not safe when mixing binary code from different compiler releases.
    Binaries created by Studio CC in default mode are not compatible with binaries created by g++. Even if you can get a program to link, which is doubtful, the program is not likely to run correctly.
    Studio CC does provide a g++ compatibility mode as follows:
    On supported versions of Linux with Studio 12.2 (C++ 5.11).
    On Solaris/x86 and supported versions of Linux with Studio 12.3 (C++ 5.12).
    In this mode, CC uses the g++ headers and the g++ runtime libraries.
    Refer to the -compat=g option in the C++ Users Guide for details.
    We plan to support the new C++ Standard, C++11, in a future compiler release. Because the ABI (binary interface) used by the current compilers is not adequate to support all the new features in C++11, we expect binaries built in C++11 mode to be incompatible with binaries created by earlier compilers. None of the existing C++ support libraries will be used in C++11 mode. A new library that provides full C++11 support will be used instead. We expect the new compiler to continue to provide the current C++03 mode as an option, being source and binary compatible with our earlier compilers.
    Edited by: Steve_Clamage on Oct 20, 2011 10:00 AM
    Edited by: Steve_Clamage on Oct 20, 2011 1:29 PM

  • Help needed regarding OIM login using wallet code

    Hi All,
    When i am trying to access the username and password from the weblogic credential store following exception occurred...Can any one help me plzzz....
    The exception is................
    javax.faces.el.EvaluationException: java.security.AccessControlException: access denied (oracle.security.jps.service.credstore.CredentialAccessPermission context=SYSTEM,mapName=oim,keyName=* read)
         at org.apache.myfaces.trinidad.component.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:51)
         at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
         at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190)
         at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
         at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._invokeApplication(LifecycleImpl.java:788)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:306)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:186)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
         at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    Caused by: java.security.AccessControlException: access denied (oracle.security.jps.service.credstore.CredentialAccessPermission context=SYSTEM,mapName=oim,keyName=* read)
         at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
         at java.security.AccessController.checkPermission(AccessController.java:546)
         at oracle.security.jps.util.JpsAuth$AuthorizationMechanism$3.checkPermission(JpsAuth.java:436)
         at oracle.security.jps.util.JpsAuth.checkPermission(JpsAuth.java:496)
         at oracle.security.jps.util.JpsAuth.checkPermission(JpsAuth.java:519)
         at oracle.security.jps.internal.credstore.util.CsfUtil.checkPermission(CsfUtil.java:611)
         at oracle.security.jps.internal.credstore.ssp.SspCredentialStore.getCredentialMap(SspCredentialStore.java:476)
         at view.backing.Task3.cb1_action3(Task3.java:403)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.el.parser.AstValue.invoke(Unknown Source)
         at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)
         at org.apache.myfaces.trinidad.component.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:46)
         ... 44 more

    See if this helps:
    Failed to initialize the application 'oim due to error java.security.Access
    regards,
    GP

  • Help needed regarding Dynamic Programming

    Hi,
    While doing dynamic programming , we bind the context variable with two types of
    values .
    1 . ddic
    2 . extern
    My doubt is in which case we should use ddic and where to use extern .
    Can anybody help me out regarding this.
    Thanks a lot.

    Hi Ki,
    Predefined, Web Dynpro UI-specific, and user-defined Dictionary types all have the
    prefix ddic:.
    wdContext.getNodeInfo()
    .addAttribute(
    "Visibility",
    "ddic:com.sap.ide.webdynpro.uielementdefinitions.Visbility")
    •&#61472;Logical Dictionary types from Adaptive RFC models have the prefix extern:.
    Check this links
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/9214b1e5-0601-0010-fdb0-ec32d43b06e0
    /people/dipankar.saha3/blog/2007/05/31/how-to-create-dynamic-approval-process-using-conditional-loop-block-in-guided-procedure
    Regards,
    Mithu

  • Some J2ME midlets doubts!! help needed urgently!!!

    Hi,
    I am currently working in a company where it does wireless technology like WAP and I am assigned a task of creating a screensaver midlet. I have some doubts on the midlets.
    1) How do i use a midlet suites? From what I heard from my colleagues & friends, a servlet is needed for midlets to interact with one another. is it true?
    2) How do I get the startin midlet to take note the phone is idling so that the screen saver midlet can be called?
    Help needed urgently... if there is any source codes for me to refer to would be better... Thanks...
    Leonard

    indicates that MIDlet suites are isolated (on purpose) from each other, so you can't write over another one's address space.
    Also, I believe (at least on cell phones) that you have to specifically enter the Java Apps mode; unless you do the app won't execute. If you are in Java apps mode and a call comes in, the cell's OS puts the Java app currently executing on "Pause" mode and switches back to phone mode.
    Not sure if you will be able to have a Java app do that automatically.
    BTW why do you need a screensaver on an LCD display? Is it really intended to show an advertisement?
    Download and real all the docs you can from Sun, once you get over the generic Java deficiencies MIDlet's aren't that hard.

  • I need to up my Data usage to 10G from 5 G help  Can anyone tell me where to go for this?

    I need to up my Data usage to 10G

    All you hsve to do is log into your account and then got to the change Options tab or click https://nbillpay.verizonwireless.com/vzw/accountholder/services/viewFeatures.action and make change to the feature that you want to change and save changes.

  • Help needed regarding ESS,MSS

    Hi All,
    I want to know about ESS and MSS .Can anybody please help me out regarding how to work with ESS,MSS in SAP Netweaver Portal .
    Where it comes into action in EP and how to configure it inside Portal.
    Thanks a lot.

    Hi,
    Check these links they maybe helpful to you
    http://help.sap.com/saphelp_nw04/helpdata/en/1f/1b1041a0f6f16fe10000000a1550b0/frameset.htm
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e534c990-0201-0010-a6b3-ce6ad5ce83a0
    https://www.sdn.sap.com/irj/sdn/wiki?path=/display/ep/business%2bpackage%2bfor%2bmanager%2bself-services%2b(MSS)
    Regards
    SURYA

  • A puzzling situation...help needed urgently!

    This is somewhat related to the topic I posted here (the app is the same) : http://forum.java.sun.com/thread.jspa?threadID=5253292
    So I managed to set things straight and pass the value of the floor selected from the drop down list to a page called FloorPlanRender.jsp (the parameter name is "floorselected", and I store this parameter into an integer variable of the same name as shown in the code for the whole page below). A controller class receives the request, initializes the DB connection and redirects to the appropriate JSP page (not shown in the codes below, but it works fine) -
    [BTW, I have posted the entire code for the page and classes involved...that was just to make the code more informative. The problem seems to be in a very small part of the code alone].
    <%@page language="java" contentType="text/html"%>
    <%@page import="java.util.Iterator"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="seatplanner.beans.FloorPlanRenderElement"%>
    <% String base = (String)application.getAttribute("base"); %>
    <% String imageURL = (String)application.getAttribute("imageURL"); %>
    <jsp:useBean id="dataManager" scope="application"
      class="seatplanner.model.DataManager"/>
    <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      <title>Tech Mahindra SeatMaster&reg; | Floor Plan</title>
      <link rel="stylesheet" href="/TechMSeatPlan/css/pagestyle.css" type="text/css"/>
    </head>
    <body>
    <div id="all">
    <!-- Display logo -->
    <div id="toppanel"> <jsp:include page="TopPanel.jsp"/> </div>
    <br/> <br/>
    <!-- Display main content -->
    <div id="contentpanel">
    <!-- Store the floor selected and get the row and column count for the floor -->
    <% String floorselect = request.getParameter("floorselected");
       int floorselected = Integer.parseInt(floorselect);
       int rowcount = dataManager.getRowCount(floorselected);
       int columncount = dataManager.getColumnCount(floorselected);
       ArrayList<FloorPlanRenderElement> floorplanelements = dataManager.getFloorPlanElements(floorselected);
       Iterator<FloorPlanRenderElement> iterator = floorplanelements.iterator(); %>
    <!-- Create Table to display the grid -->
    <% if(!(floorplanelements.isEmpty())) // Checks whether the retrieved ArrayList is empty or not
    FloorPlanRenderElement anelement = new FloorPlanRenderElement();%>
    <table id="floorplan">
    <% while(iterator.hasNext())
         for(int i=1; i==rowcount; i++)
              { %>
                   <tr>
                   <% for(int j=1; j==columncount; j++)
                        anelement = iterator.next(); // Store the elements one by one
                   %>
                   <td width=30px height=30px> <img src="<%=imageURL + anelement.floorelement.getElementType() + "-" + anelement.floorelement.getOccupied()%>"/> </td>
                    <% } //close for...j loop %>
                    </tr>
          <% } //close for...i loop %>
    <% } //close while... loop %>
    </table>
    <% } //close if, start else
    else { %>
    No floor plan exists. Please choose another floor.
    <% } //close else %>
    </div>
    </div>
    </body>
    </html>
                        Now, using this value for floor selected, I have to get the rows and columns configured for this floor from a database. This involves performing a select max statement so that I can get the maximum row and column number respectively. So I call upon the relevant methods in the DataManager class by creating an object, which in turn gets forwarded to a class known as FloorPlanRenderPeer.java [The code for both are shown below]:
    DataManager.java
    package seatplanner.model;
    import java.util.Hashtable;
    import java.util.ArrayList;
    import java.util.Enumeration;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import seatplanner.beans.FloorPlanRenderElement;
    public class DataManager {
      private String dbURL = "";
      private String dbUserName = "";
      private String dbPassword = "";
      /*Basic and connectivity operations */
      public void setDbURL(String dbURL) {
        this.dbURL = dbURL;
      public String getDbURL() {
        return dbURL;
      public void setDbUserName(String dbUserName) {
        this.dbUserName = dbUserName;
      public String getDbUserName() {
        return dbUserName;
      public void setDbPassword(String dbPassword) {
        this.dbPassword = dbPassword;
      public String getDbPassword() {
        return dbPassword;
      public Connection getConnection() {
        Connection conn = null;
        try {
          conn = DriverManager.getConnection(getDbURL(), getDbUserName(),
              getDbPassword());
        catch (SQLException e) {
          System.out.println("Could not connect to DB: " + e.getMessage());
        return conn;
      public void putConnection(Connection conn) {
        if (conn != null) {
          try { conn.close(); }
          catch (SQLException e) { }
         /* Floor related operations */
         public ArrayList<Integer> getAllFloorNumbers() {
              return FloorPeer.getAllFloorNumbers(this);
         /* Floor Plan Rendering related operations */
         public int getRowCount(int floorselected) {
              return (FloorPlanRenderPeer.getRowCount(this, floorselected));
         public int getColumnCount(int floorselected) {
              return (FloorPlanRenderPeer.getColumnCount(this, floorselected));
         public ArrayList<FloorPlanRenderElement> getFloorPlanElements(int floorselected) {
              return FloorPlanRenderPeer.getFloorPlanElements(this, floorselected);
    FloorPlanRenderPeer.java
    package seatplanner.model;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import seatplanner.beans.FloorPlanRenderElement;
    /* This class handles all floor plan rendering operations */
    public class FloorPlanRenderPeer
    /* This method returns the number of rows configured for the floor */
    public static int getRowCount(DataManager dataManager, int floorselected) {
         int rowcount=0;
        Connection connection = dataManager.getConnection();
        if (connection != null) {
          try { 
              Statement s = connection.createStatement();
              try
            String sql = "select max(grid_x_pos) from seatplanner.floorgridpart where floor_id =" + floorselected;
            ResultSet rs = s.executeQuery(sql);
              try {
                  rowcount = rs.getInt(1);
              finally { rs.close(); }
            finally {s.close(); }
          catch (SQLException e) {
            System.out.println("Could not get row count: " + e.getMessage());
          finally {
            dataManager.putConnection(connection);
        return (rowcount);
    /* This method returns the number of columns configured for the floor */
    public static int getColumnCount(DataManager dataManager, int floorselected) {
         int columncount=0;
        Connection connection = dataManager.getConnection();
        if (connection != null) {
          try {
            Statement s = connection.createStatement();
               try {
            String sql = "select max(grid_y_pos) from seatplanner.floorgridpart where floor_id =" + floorselected;
              ResultSet rs = s.executeQuery(sql);
              try {
                  columncount = rs.getInt(1);
                        } finally { rs.close(); }
               } finally {s.close(); }
          catch (SQLException e) {
            System.out.println("Could not get column count: " + e.getMessage());
          finally {
            dataManager.putConnection(connection);
        return columncount;
    /* This method returns all the grid elements needed to render the floor plan for the selected floor */
    public static ArrayList<FloorPlanRenderElement> getFloorPlanElements(DataManager dataManager, int floorselected) {
        ArrayList<FloorPlanRenderElement> floorplanrenderelements = new ArrayList<FloorPlanRenderElement>();
         FloorPlanRenderElement oneelement = new FloorPlanRenderElement();
        Connection connection = dataManager.getConnection();
        if (connection != null) {
          try {
            Statement s = connection.createStatement();
            String sql = "select distinct A.grid_x_pos, A.grid_y_pos, A.element_ID, B.element_type, B.occupied" +
                              "from seatplanner.floorgridpart A, seatplanner.floorelement B where (A.floor_ID = " + floorselected +
                              "and A.element_ID = B.ID) order by A.grid_x_pos, A.grid_y_pos asc";     
            try {
              ResultSet rs = s.executeQuery(sql);
              try {
                while (rs.next()) {
                  oneelement.floorgridpart.setGridXPos(rs.getInt(1));
                     oneelement.floorgridpart.setGridYPos(rs.getInt(2));
                     oneelement.floorgridpart.setElementID(rs.getString(3));
                     oneelement.floorelement.setID(rs.getString(3));
                     oneelement.floorelement.setElementType(rs.getString(4));
                     oneelement.floorelement.setOccupied(rs.getString(5));
                     floorplanrenderelements.add(oneelement);
              finally { rs.close(); }
            finally {s.close(); }
          catch (SQLException e) {
            System.out.println("Could not get floor numbers: " + e.getMessage());
          finally {
            dataManager.putConnection(connection);
        return floorplanrenderelements;
    }When I run the application and choose my floor, the result throws me a "No floor plan exists...." [the else...part in the jsp page].
    I have come to know that it is because for some odd reason, the rowcount and columncount variables are not being set properly. I have tested the queries used in the FloorPlanRender peer class in the mySQL query browser and they work (both the row and column count for floor 3 for example, should return 20). But they don't. When I printed out the rowcount and columncount variables, they were set to a 0. I thought the floorselected parameter wasn't retrieved from the previous page properly, but to my surprise it was successfully set to 3, indicating the desired floor number.
    I can't begin to see where the error is. There is nothing wrong with the DB connection or the query, but the correct value is not being set to the variables in the jsp page.
    Can someone please have a look at the code and guide me as to what possibly is going wrong? I have spent a lot of time and effort and still haven't spotted the mistake, if any. Your help is much appreciated.

    Again wrong usage of Iterator :)
    <%@page language="java" contentType="text/html"%>
    <%@page import="java.util.Iterator"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="seatplanner.beans.FloorPlanRenderElement"%>
    <% String base = (String)application.getAttribute("base"); %>
    <% String imageURL = (String)application.getAttribute("imageURL"); %>
    <jsp:useBean id="dataManager" scope="application"
      class="seatplanner.model.DataManager"/>
    <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      <title>Tech Mahindra SeatMaster&reg; | Floor Plan</title>
      <link rel="stylesheet" href="/TechMSeatPlan/css/pagestyle.css" type="text/css"/>
    </head>
    <body>
    <div id="all">
    <!-- Display logo -->
    <div id="toppanel"> <jsp:include page="TopPanel.jsp"/> </div>
    <br/> <br/>
    <!-- Display main content -->
    <div id="contentpanel">
    <!-- Store the floor selected and get the row and column count for the floor -->
    <% String floorselect = request.getParameter("floorselected");
       int floorselected = Integer.parseInt(floorselect);
       int rowcount = dataManager.getRowCount(floorselected);
       int columncount = dataManager.getColumnCount(floorselected);
       ArrayList<FloorPlanRenderElement> floorplanelements = dataManager.getFloorPlanElements(floorselected);
       Iterator<FloorPlanRenderElement> iterator = floorplanelements.iterator(); %>
    <!-- Create Table to display the grid -->
    <% if(!(floorplanelements.isEmpty())) // Checks whether the retrieved ArrayList is empty or not
    FloorPlanRenderElement anelement = new FloorPlanRenderElement();%>
    <table id="floorplan">
    <% while(iterator.hasNext()){
    anelement = iterator.next(); // The iterator.next() every call would takes the pointer to the next element in the collection
    for(int i=1; i==rowcount; i++){ %>
    <tr>
    <% for(int j=1; j==columncount; j++){%>
    <td width=30px height=30px> <img src="<%=imageURL + anelement.floorelement.getElementType() + "-" + anelement.floorelement.getOccupied()%>"/> </td>
    <% } //close for...j loop %>
    </tr>
    <% } //close for...i loop %>
    <% } //close while... loop %>
    </table>
    <% } //close if, start else
    else { %>
    No floor plan exists. Please choose another floor.
    <% } //close else %>
    </div>
    </div>
    </body>
    </html>For god sake please bother to understand how any implementation of java.util.Iterator works
    for more info go through javadocs
    http://java.sun.com/j2se/1.5.0/docs/api/java/util/Iterator.html
    and i believe you have completey ignored my other suggestion of using enhanced loop in J2SE 5.0+ if iterator is confusing.
    Anyways,hope the above might help you in fixing of what you are trying to..
    REGARDS,
    RaHuL

  • [Solved] Help needed to interpret errors (python)

    Have the following code (Haven't written it my self and don't know much about how it does what it's supposed to do.):
    #!/usr/bin/python
    import sys
    import os
    import re
    import logging
    import json
    if sys.version_info < (3, 0):
    from urllib2 import Request
    from urllib2 import urlopen
    from urlparse import urlparse
    else:
    from urllib.request import Request
    from urllib.request import urlopen
    from urllib.parse import urlparse
    raw_input = input
    useragent = 'Mozilla/5.0'
    headers = {'User-Agent': useragent}
    intro = """
    Usage: drdown.py url
    This script finds the stream URL from a dr.dk page so you can
    download the tv program.
    def fetch(url):
    """Download body from url"""
    req = Request(url, headers=headers)
    response = urlopen(req)
    body = response.read()
    response.close()
    # convert to string - it is easier to convert here
    if isinstance(body, bytes):
    body = body.decode('utf8')
    return body
    class StreamExtractor:
    def __init__(self, url):
    self.url = url.lower()
    self.urlp = urlparse(self.url)
    def get_stream_data(self):
    """supply a URL to a video page on dr.dk and get back a streaming
    url"""
    if self.urlp.netloc not in ('dr.dk', 'www.dr.dk'):
    raise Exception("Must be an URL from dr.dk")
    self.html = fetch(self.url)
    logging.info("Player fetched: " + self.url)
    # Standalone show?
    if self.urlp.path.startswith('/tv/se/'):
    return self.get_stream_data_from_standalone()
    # Bonanza?
    elif self.urlp.path.startswith('/bonanza/'):
    return self.get_stream_data_from_bonanza()
    # Live tv?
    elif self.urlp.path.startswith('/tv/live'):
    return self.get_stream_data_from_live()
    else:
    return self.get_stream_data_from_series()
    def get_stream_data_from_rurl(self, rurl):
    """Helper method to parse resource JSON document"""
    body = fetch(rurl)
    resource_data = json.loads(body)
    qualities = resource_data.get('links')
    # sort by quality
    qualities = sorted(qualities, key=lambda x: x['bitrateKbps'],
    reverse=True)
    stream_data = qualities[0]
    stream_url = stream_data.get('uri')
    logging.info("Stream data fetched: " + stream_url)
    playpath, filename = self.get_metadata_from_stream_url(stream_url)
    stream_data = {'stream_url': stream_url,
    'playpath': playpath,
    'filename': filename,
    'is_live': False}
    return stream_data
    def get_metadata_from_stream_url(self, stream_url):
    """Helper method to extacts playpath and filename suggestion from a
    rtmp url"""
    parsed = urlparse(stream_url)
    playpath_s = parsed.path.split('/')[2:]
    playpath = '/'.join(playpath_s)
    # rerun to split the parameter
    path = urlparse(parsed.path).path
    filename = path.split('/')[-1]
    return playpath, filename
    def get_stream_data_from_standalone(self):
    """Extracts stream data from a normal single program page.
    The data is hidden in a resource URL, that we need to download
    and parse.
    mu_regex = re.compile('resource: "([^"]+)"')
    m = mu_regex.search(self.html)
    if m and m.groups():
    resource_meta_url = m.groups()[0]
    return self.get_stream_data_from_rurl(resource_meta_url)
    def get_stream_data_from_bonanza(self):
    """Finds stream URL from bonanza section. Just pick up the first RTMP
    url.
    stream_regex = re.compile('rtmp://.*?\.mp4')
    m = stream_regex.search(self.html)
    if m and m.group():
    stream_url = m.group()
    else:
    raise Exception("Could not find Bonanza stream URL")
    playpath, filename = self.get_metadata_from_stream_url(stream_url)
    stream_data = {'stream_url': stream_url,
    'playpath': playpath,
    'filename': filename,
    'is_live': False}
    return stream_data
    def get_stream_data_from_live(self):
    stream_url = 'rtmp://livetv.gss.dr.dk/live'
    quality = '3'
    playpaths = {'dr1': 'livedr01astream',
    'dr2': 'livedr02astream',
    'dr-ramasjang': 'livedr05astream',
    'dr-k': 'livedr04astream',
    'dr-update-2': 'livedr03astream',
    'dr3': 'livedr06astream'}
    urlend = self.urlp.path.split('/')[-1]
    playpath = playpaths.get(urlend)
    filename = 'live.mp4'
    if playpath:
    playpath += quality
    filename = urlend + '.mp4'
    stream_data = {'stream_url': stream_url,
    'playpath': playpath,
    'filename': filename,
    'is_live': True}
    return stream_data
    def get_stream_data_from_series(self):
    """dr.dk has a special player for multi episode series. This is the
    fall back parser, as there seems to be no pattern in the URL."""
    slug_regex = re.compile('seriesSlug=([^"]+)"')
    m = slug_regex.search(self.html)
    if m and m.groups():
    slug_id = m.groups()[0]
    else:
    raise Exception("Could not find program slug")
    logging.info("found slug: " + slug_id)
    program_meta_url = 'http://www.dr.dk/nu/api/programseries/%s/videos'\
    % slug_id
    body = fetch(program_meta_url)
    program_data = json.loads(body)
    if not program_data:
    raise Exception("Could not find data about the program series")
    fragment = self.urlp.fragment
    if fragment.startswith('/'):
    fragment = fragment[1:]
    fragment = fragment.split('/')
    video_id = fragment[0]
    logging.info("Video ID: " + video_id)
    video_data = None
    if video_id:
    for item in program_data:
    if item['id'] == int(video_id):
    video_data = item
    if not video_data:
    video_data = program_data[0]
    resource_meta_url = video_data.get('videoResourceUrl')
    return self.get_stream_data_from_rurl(resource_meta_url)
    def generate_cmd(self):
    """Build command line to download stream with the rtmpdump tool"""
    sdata = self.get_stream_data()
    if not sdata:
    return "Not found"
    filename = sdata['filename']
    custom_filename = raw_input("Type another filename or press <enter> to keep default [%s]: " % filename)
    if custom_filename:
    filename = custom_filename
    cmd_live = 'rtmpdump --live --rtmp="%s" --playpath="%s" -o %s'
    cmd_rec = 'rtmpdump -e --rtmp="%s" --playpath="%s" -o %s'
    if sdata['is_live'] is True:
    cmd = cmd_live % (sdata['stream_url'], sdata['playpath'], filename)
    else:
    cmd = cmd_rec % (sdata['stream_url'], sdata['playpath'], filename)
    return cmd
    def main():
    if len(sys.argv) > 1:
    url = sys.argv[1]
    extractor = StreamExtractor(url)
    cmd = extractor.generate_cmd()
    os.system(cmd)
    else:
    print(intro)
    if __name__ == "__main__":
    main()
    When I run the script with an appropriate URL as parameter, I get this:
    Traceback (most recent call last):
    File "./drdown.py", line 243, in <module>
    main()
    File "./drdown.py", line 235, in main
    cmd = extractor.generate_cmd()
    File "./drdown.py", line 211, in generate_cmd
    sdata = self.get_stream_data()
    File "./drdown.py", line 65, in get_stream_data
    return self.get_stream_data_from_standalone()
    File "./drdown.py", line 123, in get_stream_data_from_standalone
    return self.get_stream_data_from_rurl(resource_meta_url)
    File "./drdown.py", line 87, in get_stream_data_from_rurl
    reverse=True)
    TypeError: 'NoneType' object is not iterable
    I should note that I didn't expect it to work out of the box, but so far I've been unable even to figure out what the problem is, no less solve it.
    I've tried my best to go through the code, looking for typos and such, but I haven't had any luck and much of what happens I don't really understand.
    So please, if you can, I'd very much appreciate a little help.
    Best regards.
    NB:
    Some might conclude that this script does something illegal. In actuality that is not so, just make that clear. Also, testing from outside Denmark, will probably not be possible.
    Last edited by zacariaz (2013-11-08 18:00:33)

    Trilby wrote:
    zacariaz wrote:Have the following code (Haven't written it my self and don't know much about how it does what it's supposed to do.)
    You know a lot more than we do: like where you then found this code, and what it is supposed to do.
    My only first thought without looking through random code that allegedly serves some unknown purpose and comes from some unknown source is that the shebang is ambiguous: it may be a python 2 script while /usr/bin/python is now python 3.
    I've pretty much concluded that python 3.3 is the right choice, sp that should not be a problem, as for what it does, it uses "rtmpdump" to record or "rip" video from a danish site "dr.dk", which is a public service television network.
    I have it from reliable sources that this actually works, or at least did at some point, on Windows machines, but of course i'm on linux, and that complicated matters.
    All in all, as I understand it, what the script really does, is retrieving the relevant rtmp link. The rest is up to "rmtpdump" which I should be able to manage.
    In any case, I'm not really that concerned with learning what the script does at this point, but rather what the error mean.
    The only actual error description I see is: "TypeError: 'NoneType' object is not iterable" and I haven't a clue what that implies. I've read through the script, but haven't been able to find any obvious flaws..

  • Doubt regarding  ALE SETTINGS in IDOC scenario.

    Hi Friends,
            I have some doubts regarding ALE settings for IDOC scenarios,  can anyone  please clarify my doubts.
    For exmaple take IDOC to FILE scenario
    The knowledge i got from SDN is --
    One need to do at the  R3 side is  --- RFC DESTINATION (SM59)  for the XI system.
                                                       --- TRFC PORT  for sending IDOC  to the  XI system
                                                       --- CREATING LOGICAL SYSTEM
                                                       --- CREATING PARTNER PROFILE 
                   at the XI side is  --- RFC  Destination ( For SAP sender system)
                                           --- CREATING  PORT  for receiving IDOC from the SAP sending system(IDX1).
    1. Do we create two logical systems for both Sender ( R3 system ) and Receiver( XI system ) in R3 system itself or in XI system or in both systems we create these logical systems? Is this a mandatory step in doing ALE configurations?
    In IDOC to IDOC scenario-------
      2.  Do we craete two RFC destinations in XI system? One RFC DESTINATION for the Sender R3 system and another RFC DESTINATION for the Receiver R3 System? and do we create RFC DESTINATION for the XI system in receiver R3 system? If not.....y we don't create like this........Please give me some clarity on this.............
      3.  If we use IDOC adapter ,since IDOC adapter resides on the ABAP STACK ,we don't need sender communication channel ,for the similar reason----
    y we r creating receiver communication channel in the case of FILE to IDOC scenario?
      4. Can any one please provide me the ALE settings for IDOC to FILE scenario,
                                                                                    FILE to IDOC scenario,                                                                               
    IDOC to IDOC scenario individually.
    Thanks in advance.
    Regards,
    Ramana.

    hi,
    1. Yes, we create two logical systems for both Sender ( R3 system ) and Receiver( XI system ) in R3 system itself and
    it is a mandatory step in doing ALE configurations
    2. We create 1 RFC destination each in R3 and XI.
        R3 RFC destination points to Xi and
        XI RFC destination  points to R3
    3 We need to create Communication Channel for Idoc receiver as the receiver channel is always required but sender may not be necessary
    4. ALE settings for all IDOC scenarios are same  as follows....
    Steps for ALE settings:-
    Steps for XI
    Step 1)
         Goto SM59.
         Create new RFC destination of type 3(Abap connection).
         Give a suitable name and description.
         Give the Ip address of the R3 system.
         Give the system number.
         Give the gateway host name and gateway service (3300 + system number).
         Go to the logon security tab.
         Give the lang, client, username and password.
         Test connection and remote logon.
    Step 2)
         Goto IDX1.
         Create a new port.
         Give the port name.
         Give the client number for the R3 system.
         Select the created Rfc Destination.
    Step 3)
         Goto IDX2
         Create a new Meta data.
         Give the Idoc type.
         Select the created port.
    Steps for R3.
    Step 1)
         Goto SM59.
         Create new RFC destination of type 3(Abap connection).
         Give a suitable name and description.
         Give the Ip address of the XI system.
         Give the system number.
         Give the gateway host name and gateway service (3300 + system number).
         Go to the logon security tab.
         Give the lang, client, username and password.
         Test connection and remote logon.
    Step 2)
         Goto WE21.
         Create a port under transactional RFC.(R3->XI)
         Designate the RFC destination created in prev step.
    Step 3)
         Goto SALE.
         Basic settings->Logical Systems->Define logical system.
         Create two logical systems(one for XI and the other for R3)
         Basic settings->Logical Systems->Assign logical system.
         Assign the R3 logical system to respective client.
    Step 4)
         Goto WE20.
         Partner type LS.
         Create two partner profile(one for XI the other for R3).
         Give the outbound or inbound message type based on the direction.
    Step 5)
         Goto WE19
         Give the basic type and execute.
         fill in the required fields.
         Goto IDOC->edit control records.
         Give the following values.(Receiver port,partner no.,part type and sender Partner no. and type)
         Click outbound processing.
    Step 6)
         Go to SM58
         if there are any messages then there is some error in execution.
         Goto WE02.
         Check the status of the IDOC.
         Goto WE47.
         TO decode the status code.
    Step 7)
         Not mandatory.
         Goto BD64.
         Click on Create model view.
         Add message type.
    BD87 to check the status of IDOC.
    In case if not authorized then go to the target system and check in SU53, see for the missing object
    and assign it to the user.
    SAP r3
    sm59(status check)(no message)
    WE02(status check)
    WE05(status check)
    BD87(status check)
    Xi
    IDx5(Idoc check)
    SU53(authorization check)
    Reward points if helpful
    Prashant

  • RFC _XI _Java Proxy.  Help needed

    Hi
       I am executing a scenario rfc_xi_java proxy.
    I am getting the error in SXMB_MONI of xi server in call adapter step.
    + <Trace level="1" type="B" name="CL_XMS_PLSRV_CALL_XMB-CALL_XMS_HTTP">
      <Trace level="1" type="System_Error">HTTP-client: error response= <b>java.lang.NullPointerException at com.sap.aii.adapter.xi.ms.XIMessage.getMessageId(XIMessage.java:2631) at</b> com.sap.aii.adapter.xi.ms.XIEventHandler.onRequest(XIEventHandler.java:761) at com.sap.aii.af.ra.ms.impl.ServerConnectionImpl.request(ServerConnectionImpl.java:146) at com.sap.aii.af.ra.ms.impl.core.transport.http.MessagingServlet.doPost(MessagingServlet.java:308) 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:95) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:160)</Trace>
      </Trace>
      <Trace level="1" type="T">Sender scheme external =</Trace>
      <Trace level="1" type="T">Sender agency external =</Trace>
      <Trace level="1" type="T">Sender party external =</Trace>
      <Trace level="1" type="T">Sender party normalized =</Trace>
      <Trace level="1" type="T">Party normalization: receiver</Trace>
      <Trace level="1" type="T">Receiver scheme external =</Trace>
      <Trace level="1" type="T">Receiver agency external =</Trace>
      <Trace level="1" type="T">Receiver party external =</Trace>
      <Trace level="1" type="T">Receiver party normalized =</Trace>
      <Trace level="1" type="T">Sender: Header before undo of mapping</Trace>
      <Trace level="1" type="T">Party =</Trace>
      <Trace level="1" type="T">Agency =</Trace>
      <Trace level="1" type="T">Scheme =</Trace>
      <Trace level="1" type="T">Service = GYD_100</Trace>
      <Trace level="1" type="T">Receiver: Header before undo of mapping</Trace>
      <Trace level="1" type="T">Party =</Trace>
      <Trace level="1" type="T">Agency =</Trace>
      <Trace level="1" type="T">Scheme =</Trace>
      <Trace level="1" type="T">Service = JRACF</Trace>
      </Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
    - <!--  ************************************
      -->
      </SAP:Trace>
    I have followed all the steps from SAP HOW to Java proxy.
    1.In Java proxy I am creating a responce object and putting some values and returning it. No thing more than that.
    2. I could be able to see message sent from r/3 in XI server.
    3. I have tested the rfc destination in r/3 server
    4. Programme id in rfc dist is maching with the programe id in the communication channel.
    Any help is greatly appreciated
    Thank you
    Monika Dietz
    Message was edited by: Monika  Dietz

    Hi
    check these links
    java Proxy Objects Developing Message Interfaces :
    http://feedfury.com/content/14188168-java_proxy_objects_developing_message_interfaces.html
    Java Proxy Objects Tables Developing Message Interfaces:
    http://feedfury.com/content/14188167-java_proxy_objects_tables_developing_message_interfaces.html
    Java Proxy Objects Enumerations Developing Message Interfaces :
    http://feedfury.com/content/14188166-java_proxy_objects_enumerations_developing_message_interfaces.html
    work with java proxies- xi 3.0
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/7d4db211-0d01-0010-1e8e-9b07fc2113ab
    Regards,
    Suryanarayana

  • Have some doubt regarding the  weblog (Lookup's in XI made simpler)

    Hi All,
    I have created the same scenario as mentioned in Siva's weblog (Lookup's in XI made simpler).
    I having some doubts regarding the scenario, it will be great if you help me to resolve the same.
    I am having a file-file scenario where I need to do lookup in database(MS-Access)  through mapping.
    The standard file-file scenario is in place and in addition I have created a receiver jdbc channel . I  have also created the receiver agreement for the same in the cofiguration.
    While creating the receiver agreement you have to specify the interface name which includes the message type…I have specified the normal format which we specify while configuring the jdbc receiver adapter.
    In the message mapping I have created a advance user defined function as mentioned in your weblog which calls my receiver jdbc channel.
    I have also specified the select query to be executed in the mapping program.
    While testing I am getting the following error
    Cannot produce target element /ns0:Role_MT/URole. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd
    <b>Can you please suggest me what all I need to do in addition to the file-file scenario for this lookup scenario to work.</b>
    Thanks and Regards
    Rahul

    Hi,
    Following is my user defined function
    //write your code here
    String Query = "";
    Channel channel = null;
    DataBaseAccessor accessor = null;
    DataBaseResult resultSet = null;
    Query = "Select URole from  Lookup where UName = '  " + UName[0] + "  ' and UPassword = '  " + Pwd[0] +" '  ";
    try{
    channel = LookupService.getChannel("DB_service","JDBC_channel_receiver");
    accessor = LookupService.getDataBaseAccessor(channel);
    resultSet  = accessor.execute(Query);
    for(Iterator rows = resultSet.getRows();rows.hasNext();){
    Map rowMap = (Map)rows.next();
    result.addValue((String)rowMap.get("URole"));
    catch(Exception ex){
    result.addValue(ex.getMessage());
    finally{
    try{
    if (accessor!= null) accessor.close();
    catch(Exception ex){
    result.addValue(ex.getMessage());
    Thanks and Regards
    Rahul

Maybe you are looking for