Project libraries, polymorphic VIs, and access scope

I'm trying to be good and arrange all my VIs appropriately in project
libraries*, marking each VI as public or private as I go. But I have
found that, when a polymorphic VI is called from outside a project
library, LabVIEW uses the access scope (public/private) from the
instance VI, not the polymorphic VI. It seems that the scope for the
polymorphic VI is simply ignored; you can even call a private
polymorphic VI, as long as the instance VI is public. I assume this has
something to do with how the actual instances are dropped on the
diagram via the polymorphic VI. Is this the intended behavior? It just
doesn't seem like the way things should be, at least not in my head.
The attached example contains a project library (Case Lib.lvlib) with three VIs:
Poly (private)
Case DBL (public)
Case I32 (private)
There
is also a Use Case DBL VI that calls Case DBL via Poly and a Use Case
I32 VI that calls Case I32 via Poly. Use Case DBL runs fine. Use Case
I32 has a broken arrow.
Originally, I had made a library with a
public polymorphic VI and private instances, because that's what makes
intuitive sense to me. Calling the polymorphic VI from another VI
didn't work because the instances were private.
(Cross-posted from LAVA.)

Good observations, these are all issues we are working on addressing in future versions of LabVIEW.  Ultimately the behavior we are going for is having the library scope checking be on the poly VI and not the instances, but I can't say at this point in which version of LabVIEW you would be able to see this changes.  Thank you for the feedback.

Similar Messages

  • Polymorphic VIs and executables

    I have recently created a polymorhic VI for a project. Now when I  tried to convert it to an executable I was told by LabVIEW that "You cannot include a polymorphic VI in the Startup VIs or Dynamic VIs and Support Files listboxes." and the help file stated that "Use an instance of the polymorphic VI instead."
    What does "Use an instance of the polymorphic VI instead." mean? Can anyone translate it into a simple langusge that may be understandable  by me?
    I'll be grateful!
    Have a nice weekend!

    Hi C.DOT,
    every polymorphic vi consists of different vi´s. You can´t use the real polymorphic vi, because it only describes which other vi´s are part of it. You can only use instance (the "subvi´s" from the polymorphic vi) in your program. If you don´t wanna start your program with the polymorphic vi  and don´t want to load it dynamically, then you don´t need to think about it while creating an executable. 
    Hope it helps.
    Mike 

  • Private inlined VIs and packed project libraries

    So, I'm trying to build a packed project library and it has a few *private* VIs that are crying out to be inlined (simple VIs used in a for loop etc). However, this seems to be causing a few issues:
    1. When I attempt to build the lvlibp I get an error stating "You cannot include inlined VIs inthis build if you remove the block diagram from the VI or if callers adapt to VIs in the packed library.". Whilst this makes sense to me for public packed library VIs, why does this matter for private ones - surely the VI will already get flattend out into the calling VI during the build process?
    2. If I try and set the Source File Settings for the inline VI to not remove the block diagram (as suggested by the error), the error still does not go away (I would really like to keep the ability for callers to adapt to VIs in the packed library).
    Here's a stripped out project (with instructions) showing the issue.
    It seems like a bug to me, but any ideas? 
    Thanks,
    Shaun
    Attachments:
    Inline VIs and Packed Libraries.zip ‏19 KB

    I was just going through the instructions to reproduce the error. Because the error says "You cannot include inlined VIs in this build if you remove the block diagram from the VI OR if callers adapt to VIs in the packed library," it seems like as long as you maintain your settings for the caller to be able to adapt the VI, then I would expect this error to continue to occur.

  • JDeveloper project libraries and Maven dependencies

    hi
    Using the Apache Trinidad Maven JDev Plugin, I am wondering how JDeveloper project libraries and Maven dependencies are supposed to be related (or "matched", or "kept in sync", or "work together", or ...).
    With the Maven settings.xml configured like this ...
    <settings>
      <!-- ... -->
      <localRepository>C:\my-maven-repository</localRepository>
      <!-- ... -->
    </settings>... I tried this ...
    C:\projects>mvn -v
    Maven version: 2.0.9
    Java version: 1.6.0_05
    OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
    C:\projects>mvn archetype:create -DgroupId=com.oracle.forums.mvnfirstproj -DartifactId=mvn-first-proj
    [INFO] OldArchetype created in dir: C:\projects\mvn-first-proj
    C:\projects>cd mvn-first-proj
    C:\projects\mvn-first-proj>mvn org.apache.myfaces.trinidadbuild:maven-jdev-plugin:jdev
    [INFO] Scanning for projects...
    [INFO] artifact org.apache.myfaces.trinidadbuild:maven-jdev-plugin: checking for updates from central
    Downloading: http://repo1.maven.org/maven2/org/apache/myfaces/trinidadbuild/maven-jdev-plugin/1.2.7/maven-jdev-plugin-1.2.7.pom
    2K downloaded
    [INFO] [jdev:jdev]
    [INFO] Generating JDeveloper 10.1.3.0.4 Project mvn-first-proj
    [INFO] Generating JDeveloper 10.1.3.0.4 Project mvn-first-proj-test
    ...After this, the file C:\projects\mvn-first-proj\mvn-first-proj-test.jpr contains
          <!-- ... -->
          <list n="libraryDefinitions">
            <hash>
              <list n="classPath">
                <url path="../../my-maven-repository/junit/junit/3.8.1/junit-3.8.1.jar" jar-entry=""/>
              </list>
              <value v="true" n="deployedByDefault"/>
              <value v="junit:junit:jar:3.8.1" n="description"/>
              <value v="junit:junit:jar:3.8.1" n="id"/>
            </hash>
          </list>
          <!-- ... -->Notice the path for the JAR file in my specific Maven repository, to be relative to my specific project location.
    questions:
    (1) This seems to severely limit the options to share such a JDeveloper project file between developers in a team (e.g. using Subversion), because they would need their Maven repository and their JDeveloper project to be in the same (relative) location. Is this intended? Are there any options to work around these limitations?
    (2) If a project evolves, and additional libraries need to be configured in a JDeveloper project, what would be the preferred approach to keep these in sync with Maven dependency configurations?
    many thanks
    Jan Vervecken

    Hi Jan,
    Yes, some of the current approach is not ideal.
    +"Maven's primary goal is to allow a developer to comprehend the complete state of a development effort in the shortest period of time."+ - By having the pom.xml define for the project, I get the ability to run site goals, junit tests and other maven reports - get a feel for the project state. Even with a very basic pom.xml file containing the groupId, ArtifactId, version, SVN repository definition and the release plugin you gain the ability to use "mvn release:clean release:prepare" to help with tagging the source in SVN. These represent progress as up to this point the team has not had access to this.
    +"Making the build process easy".+ - The approach does make the build part easier for JDeveloper 10.1.2. As a maven build, it is now possible to check the project into SVN and have it built by Bamboo, without having to include an installation of JDeveloper 10.1.2 (for library access) on the CI server.
    +"If I understand correctly, in your approach, you are trying to keep both pom.xml and JDeveloper project files up-to-date manually?"+ - The only reason for keeping the JPR in sync with the pom.xml file is to allow the developers to still make use of features such as selecting run from the right click menu. At present, I am still slowly getting up to speed on how JDeveloper works and interacts with OC4J. Ultimately, you would want a maven plugin that will deploy the packaged WAR or EAR to the OC4J stand-alone or remote instance. This plugin would probably wrap the commands that the IDE uses, e.g.
    If you right click on the deployment profile for a project (JDeveloper 10.1.2) and select the Platform > Standalone OC4J options, you find:
    Deploying Ear+
    ${java} ${jvm.max.heap.size} -jar ${admin.jar}
    ${oc4j.url} ${username} ${password}
    -deploy -file ${ear.file}
    -deploymentName ${j2ee.app.name}
    Binding Web Apps+
    ${java} -jar ${admin.jar}
    ${oc4j.url} ${username} ${password}
    -bindWebApp ${j2ee.app.name} ${j2ee.web.app.name}
    ${oc4j.web.site} ${j2ee.context.root}
    And for Platform > OracleAS Remote DCM:
    ${java} -Djava.protocol.handler.pkgs=HTTPClient
    -jar ${Oc4jDcmClient.jar}
    ${dcm.servlet.url} ${username} ${password}
    redeploy ${remote.oracle.home}
    ${ear.file} ${j2ee.app.name} ${oc4j.instance.name}
    With a maven plugin- wrapping the deployment (possible even to the embedded OC4J) you could then look at get away without maintaining the libraries in the JPR. The JPR the becomes the configuration file for the IDE interaction only without affecting the build. For debugging, you can deploy to a standalone instance and start it using:
    java -server -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000 -jar oc4j.jar
    Then connect to the port specified. The primary project I was working on was developed in Netbeans and deployed to SJSAS. I have since switch this project to working with JDeveloper 11.1.1 as the IDE and doing remote debugging from the IDE connecting to the SJSAS debug port.
    Note, that the maven plugin development for the managing of these aspects should be easier with JDeveloper 11.1.1 and the integrated WLS.
    Have you used this approach in a project that uses ADF Business Components? - Yes, I have used it on one of the smaller ADF projects that had already been produced by the team. This project has all the maven features and ability to deploy to the remotes AS via ant scripts. The approach worked in both the dev and test environments. However, for final deployment, I still used the deployment profile to be consistent with the rest of the team.
    Regards,
    Graeme.

  • Projects and Project Libraries

    I've been happily using Projects since they were introduced in LabVIEW 8-something.
    I've got a Project whose task involves examining directory trees containing other VIs.  In some cases, the VIs my code examines have the same name as one of the VIs being used in the code (I'm running in Development Mode, not from an executable).  To avoid "name clashes", I did a search on NameSpaces and learned about Project Libraries.
    So I've successfully ported all of the files in my Project into a similarly-named Project Library.  The code works just fine.
    Today, I opened my Project to look at one of my VIs, and to my horror, the Project had none of the files showing.  It also didn't show the Project Library (where I "knew" all the files were located).  A tad worried, I looked on my disk, and found the Project Library (.lvlib) file -- if I double-click it, there are my files!
    What I'm having trouble doing (maybe because it is impossible!) is getting a view "inside" my Project Library from the Project Explorer.  Given the close relationship between Projects and Project Libraries (the second is created from the first, for example), I would have expected to see such a link.  Does it exist?  Or are you expected to open both a Project (which, in my case, has files that are not in the Project Library) and the corresponding Project Library?
    Note I did a search through the NI Documentation on Project Libraries, and what I read emphasized the close relationship between a Project and an associated Project Library, including giving them the same (or similar) name and keeping the files in the same folders.  [Hmm -- I just realized I did not name my Project and Library identically -- I called the Project "Project XYZ", and the Project Library "Library XYZ" ...].
    Experience "from the field" would be most welcome!
    Bob Schor
    Solved!
    Go to Solution.

    HandyAndy wrote:
    Would you mind posting your project so someone could take a look at it?
    Dear Handy,
         Humble Pie time (again!).  When I saw your request, I said (to myself, silently) "Just how dumb do they think I am?".  So this morning, I brought back an earlier pre-Library version of my Project, captures some screen shots of "Before", and started to (re-)create my Library.  I couldn't remember exactly how I did it before, so I followed the steps in the LabVIEW 2011 Manual.  I did a "New, Library" from My Computer in the Project, and dragged stuff into it.  This time, I noticed there was a lot of "saving VIs" that I didn't recall from my earlier (first) Project Library.  When I was done, there, in Project, right where I was expecting to see it (but wasn't!) was my Project Library!
         So what did I "do wrong" before that caused the Library to "disappear" from the Project?  Who knows, but I clearly did something (mysterious) incorrectly -- I'll try not to do whatever-it-was again!
         Onward and upward (or maybe onward and downward, since Austin, home of NI Week, is south from here ...).
    Bob Schor

  • I have an extensive aperture library on my computer's hard drive and I want to break it up into separate smaller libraries on external hard drives.  How do I take projects from one library and add them to another one?

    I have an extensive aperture library on my computer's hard drive and I want to break it up into separate smaller libraries on external hard drives.  How do I take projects from one library and add them to another one?

    Coastal,
    Frank gave you the exact answer to your question. 
    However, I would like to ask if you are indeed asking the right question.  Do you really want different libraries?  The implications are that you have to "switch" libraries to see what's in the others, and so that your searches don't work across all of your pictures?  If so, then you asked the right question.  If not, you may be more interested in relocating your masters to multiple hard drives so your library gets smaller, instead of breaking up the library.
    nathan

  • How does private access scope manifest itself?

    Hi,
    I am in the process of converting an old project to use Project Libraries (*.lvlib). I have read and watched all the tutorials, LV Help sections, etc. I understand the benefits of using project libraries. But, I still do not understand how access to VIs is restricted after setting their scope to private. For example, I can create a new VI, outside the project library, then "Select a VI" to place on the block diagram, using a subVI with private access from a project library. And I can can run this test VI without any apparent problem.
    So, I seem to be able to access a 'private' VI. How and where is the access restricted for a VI with private scope?
    Thanks,
    RonC
    Solved!
    Go to Solution.

    Hi Chris,
    No example required...I can explain.     
    You know, after trying and trying to sort this out myself, and not being able to, I knew that when I asked, it would turn out to be something stupid. Here is what happened...
    I was using the "Data Acquisition Reference Design" project example as a reference to sort this out. I think this is an excellent one. I looked at the Configuration module and Display module sub-libraries, and the scope is just as described in the tutorials; i.e. the API VIs marked Public and the subVIs marked Private.
    Then, for my little example VI, I used a "Private" subVI from the Logging module, because it did not require any other resources to run, it just checked the root directory.  It worked fine, and hence my confusion. But, after you told me that should not work, I looked again, and out of the four sub-libraries used in the example, two (the two I looked at) have the access set as described, but the other two do not -- everything is Public. And, of course I used one of the public ones.
    I just tried again, using a "Private" subVI from the Display module, and although I can see it and place it on my block diagram, my calling VI is broken, the reason given is because of the private scope.
    Doh! I have only been doing this for 22 years, so not yet long enough to avoid the dumb mistakes I guess.
    Thanks for setting me straight.
    RonC
    P.S. I am using LV 2010 SP1

  • Does access scope change the way Object oriented code compiles or executes

    I have started using Acess Scope (Private/Public/Protected/Friend) in my code and I am wondering if ti changes the way the software is compiled and executed.
    I am suffering a 6 minute pre-load startup time and am scrambling to find aything that helps.
    Tim L.
    iTm - Senior Systems Engineer
    uses: LABVIEW 2012 SP1 x86 on Windows 7 x64. cFP, cRIO, PXI-RT

    Hi Timmar,
    I don’t think that the Access Scope is the cause of this long pre-load time. However, you can try to set to public in order to see if that makes any change.
    I think this long pre-load time could be related to how many files (VIs and dependencies) are included in your project. Also, if you move the Project folder to a different location (or computer) the next time that you try to open the project it will take a little while to open.
    Regards,
    Richard.

  • Sharing iMove Projects Libraries with different users on the same machine

    I was wonder how two different users on the same machine can
    share project libraries. Some Context:
    My daughter has some finished projects in her project library and
    I either want to import those project into my library or share them
    so both user accounts can access the projects (similar to how the
    event library is accessible)
    Note: I've already moving the project library to a shared disk (the one
    the event library is on) with no luck
    Using iMove 09
    tia...

    You need to move each project to the external drive from within iMovie. Be sure to use command-drag so you move, not copy.

  • UWC/CE 6.3 and Access Manager 7.1 SSO sometimes fails (seems like a bug)

    PREAMBULA: I started writing this post thinking that our AM SSO setup was at fault in some step. As I was gathering data, checking the doc-links and config files and finally sniffed the servers for HTTP dialogs, I grew pretty sure there's a bug in UWC/CE, AM SDK or Web Server Policy Agent, whatever implements the AM SSO session checking.
    In short, as written below, our "sunmail" server can POST a broken cookie to AM server, if the cookie originally contained a "plus" character. The "plus" is replaced by a "space", invalidating the session check. As we know, "+" is often used in URLs to "escape" the space character. Perhaps some URL cleanup routine backfired here. I have double-checked, it is not the reverse proxy on "psam" breaking things. It is "sunmail" (UWC/CE or Policy Agent, don't know for certain) supplying the broken request. On the few occasions when the AM cookie contains no "plus" characters, the SSO works like a charm (also checked by a sniffer). Whenever there is a "plus", it breaks.
    Is there some known bug or workaround that matches this description?
    Nevertheless, for completeness' sake I kept the description of our setup. Maybe it's at fault after all :)
    We have an installation of JCS5 with the latest patches as of early July 2008. And as the subject implies, we have problems with AM SSO in UWC/CE web-interface. I have reported them before, then they seemed fixed (not occuring for several tests in a row), but as time has shown, something wrong is still there.
    So I'll try to go into deeper detail now, as we've may have overlooked some nuance... Then again, as my sniffer research below shows, this may be an engine bug and these setup details are irrelevant.
    Our setup is split into several Solaris 10 full-root zones hosted on several servers, some of the components are enroute to HA (perhaps we made some mistakes on this part of the way?)
    So, we have the following software stack:
    1) two MMR Directory Servers (DSEE 6.3 = DSEE 6.2 from JCS5 + 125278-07__DSEE_6.3__x86x64 + 125277-07__DSEE_6.3__x86_sol9 patches) working in zones on two different servers. Except for one time when a manually forced ZFS rollback corrupted one of the server instances, no problems here.
    2) two zones with Directory Proxy Servers (6.3, exact versions as above) running at port 389 provide the clients with an illusion that they have a stable Directory Server, even if one of the actual servers is currently rebooting ;)
    These DPS zones are hosted on two different servers as well and are primarily used by LDAP clients (JCS components) running in other zones on the same respective servers.
    3) A zone with Sun Web Server 7.0U1 and Access Manager 7.1 (+ 126357-01__AM71_x86 patch) and Delegated Admin 6.4-4.01 (from JCS5 + 121582-18__COMMCLI64__x86 patch).
    At the moment there is one such zone (named "cos-psam-01.domain.ru" in the logs below), but we expect(-ed) it to become two similar zones as per AM HA setup.
    Zones listed in (1-3) use private IP numbers, they belong in our internal DMZ.
    Zones listed in (4-5) below use public (routed) IP numbers, they belong in our external DMZ.
    4) A zone with Sun Web Server 7.0U1 used primarily as a reverse-proxy server (optionally with a load-balancer libpassthrough.so plugin) successfully used for other hosted projects. One of its configurations now passes connections from an externally routed IP address published as "psam.domain.ru" to "cos-psam-01.domain.ru", per AM HA setup, so HTTP clients believe they work with an Access Manager instance. This zone has a backend interface with a private IP address to communicate with the actual AM instance.
    In AM configuration (both LDAP and file-based) we have configured a site ID with the publicly known name and mentioned both names (psam and cos-psam-01) in organization's realm/dns aliases.
    5) A zone with the rest of the Sun Java Communications Suite 5, as in Messaging Server 6.3 (6.3-6.03 64-bit: ci-5.0-1.03_solx86_x64__Messaging_Server_6.3-2 + patch 126480-09__MSG63__x86-64), UWC/CE 6.3 (from JCS5 + 122794-17__UWC63-4.01_core__x86), Instant Messaging 7.2 (from JCS5 + 118790-29__IM72__x86-1 + 118787-28__IM72__x86-2), Calendar Server 6.3 (from JCS5 + 121658-28__iCS63__x86). The web-components (UWC/CE, IM, /httpbind) are deployed in a Sun Web Server 7.0U1 as well.
    This zone is named "sunmail.domain.ru" and has a routed IP address for direct external access to its servicess.
    The AM SDK part is also patched (126357-01__AM71_x86); it points to the load-balancer name ("psam.domain.ru") as an actual AM server.
    # imsimta version
    Sun Java(tm) System Messaging Server 6.3-6.03 (built Mar 14 2008; 64bit)
    libimta.so 6.3-6.03 (built 17:15:08, Mar 14 2008; 64bit)
    SunOS sunmail 5.10 Generic_127112-07 i86pc i386 i86pc
    While setting up this server set we tried to use AM SSO as the user login method, but it works unreliably.
    "Unreliably" means that while most of the time entering a correct uid and password in Access Manager login page ("http://psam.domain.ru/amserver/UI/Login") does redirect a user back to "http://sunmail.domain.ru/uwc/auth" along with a new cookie, and the user is redirected again to his or her mailbox, sometimes the user receives the UWC/CE login page. Entering the same uid and password here does log him in, but it breaks the whole point of SSO and only increases the end-user routine required to log in :\
    We have also seen the "missing mail tab" problem - if the users point the browser to any hostname different from "sunmail.domain.ru" (i.e. www.mail.domain.ru which is equivalent in DNS), they have only the Address book, Calendar and Options tabs; no webmail. So far this is resolved by Policy Agent forcing The One name of the server.
    Here's the configuration we did specifically for AM SSO:
    1) in AMConfig.properties of "sunmail" and "cos-psam-01" we set up
    com.iplanet.am.cookie.encode=false
    am.encryption.pwd=<the same value>
    all hostname-related parameters point to "psam.domain.ru"
    2) in AMConfig.properties of "cos-psam-01" a number of FQDN equivalence entries are added (so it does not redirect to a server hostname unknown to visitors):
    com.sun.identity.server.fqdnMap[publicname-or-ip]=psam.domain.ru
    com.sun.identity.server.fqdnMap[cos-psam-01.domain.ru]=cos-psam-01.domain.ru
    3) in "msg.conf" on "sunmail" (entries added via configutil):
    local.webmail.sso.amcookiename = iPlanetDirectoryPro
    local.webmail.sso.amnamingurl = http://psam.domain.ru:80/amserver/namingservice
    local.webmail.sso.singlesignoff = yes
    local.webmail.sso.uwcenabled = 1
    service.http.ipsecurity = no
    (perhaps some more options are required? Looking for confirmation about: local.webmail.sso.uwclogouturl local.webmail.sso.uwccontexturi local.webmail.sso.uwchome service.http.allowadminproxy )
    4) Configured Web Policy Agent for Sun Web Server, so that users without an AM session are required to get one. Set up per [http://msg.wikidoc.info/index.php/AM_redirection_using_Policy_Agent], except that com.sun.am.policy.agents.config.notenforced_list points to the many names our server can go known by.
    5) Updated the logout URL in /opt/SUNWuwc/webmail/main.js:
    --- main.js.orig        Sat Jan 26 07:52:09 2008
    +++ main.js     Mon Jul 21 01:06:29 2008
    @@ -667,7 +667,8 @@
    function cleanup() {
       if(laurel)
    -      top.window.location =  getUWCHost() + "/base/UWCMain?op=logout"
    +//      top.window.location =  getUWCHost() + "/base/UWCMain?op=logout"
    +      top.window.location =  "http://sunmail.domain.ru:80/base/UWCMain?op=logout"
       else
           exec('logout', '', 'exit()')
    @@ -1707,7 +1708,8 @@
       if(lg) {
             url = document.location.href
             url = url.substr(0,url.indexOf('webmail'))
    -        uwcurl = url + 'base/UWCMain?op=logout'        
    +//      uwcurl = url + 'base/UWCMain?op=logout'        
    +        uwcurl = "http://sunmail.domain.ru:80/base/UWCMain?op=logout"
       exit()
    }6) Calendar SSO - per docs...
    According to ngrep sniffing,
    1) the browser goes to "http://sunmail.domain.ru/uwc/auth" without any cookies
    2) receives a redirect and goes to "http://psam.domain.ru/amserver/UI/Login?gotoOnFail=http://sunmail.domain.ru:80/uwc&goto=http%3A%2F%2Fsunmail.domain.ru%3A80%2Fuwc%2Fauth"; sends no cookies either.
    3) The first response from the "psam" server (as redirected from "cos-psam-01") sets a few cookies while rendering the login page:
    Set-cookie: JSESSIONID=7EF8F2810D2071CA03CFEAE9972735B2; Path=/
    Set-cookie: AMAuthCookie=AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1+xTqH7C3I=@AAJTSQACMDI=#; Domain=.domain.ru; Path=/
    Set-cookie: amlbcookie=02; Domain=.domain.ru; Path=/
    4) The browser requests the login page resources (javascripts, images, etc) using these cookies, as in this header line:
    Cookie: JSESSIONID=7EF8F2810D2071CA03CFEAE9972735B2; AMAuthCookie=AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1+xTqH7C3I=@AAJTSQACMDI=#; amlbcookie=02
    5) The browser POSTs the login request to "/amserver/UI/Login" and receives a redirection to http://sunmail.domain.ru:80/uwc/auth
    Set-cookie: iPlanetDirectoryPro=AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1+xTqH7C3I=@AAJTSQACMDI=#; Domain=.domain.ru; Path=/
    Set-cookie: AMAuthCookie=LOGOUT; Domain=.domain.ru; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
    6) The browser requests "http://sunmail.domain.ru/uwc/auth" using the newly set cookie (looks like the old one to me though):
    Cookie: amlbcookie=02; iPlanetDirectoryPro=AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1+xTqH7C3I=@AAJTSQACMDI=#
    7) The "sunmail" web-server checks the AM session validity with the same "psam.domain.ru". It sends a series of POSTs to /amserver/namingservice:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RequestSet vers="1.0" svcid="com.iplanet.am.naming" reqid="685">
    <Request><![CDATA[
    <NamingRequest vers="1.0" reqid="324" sessid="AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1+xTqH7C3I=@AAJTSQACMDI=#">
    <GetNamingProfile>
    </GetNamingProfile>
    </NamingRequest>]]>
    </Request>
    </RequestSet>(receives a large XML list of different Access Manager configuration parameters and URLs)
    ...then a double-request to /amserver/sessionservice:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RequestSet vers="1.0" svcid="Session" reqid="686">
    <Request><![CDATA[
    <SessionRequest vers="1.0" reqid="678">
    <GetSession reset="true">
    <SessionID>AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1+xTqH7C3I=@AAJTSQACMDI=#</SessionID>
    </GetSession>
    </SessionRequest>]]>
    </Request>
    <Request><![CDATA[
    <SessionRequest vers="1.0" reqid="679">
    <AddSessionListener>
    <URL>http://sunmail.domain.ru:80/UpdateAgentCacheServlet?shortcircuit=false</URL>
    <SessionID>AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1+xTqH7C3I=@AAJTSQACMDI=#</SessionID>
    </AddSessionListener>
    </SessionRequest>]]>
    </Request>
    </RequestSet>As a result it receives an XML with a lot of user-specific information (the username, LDAP DN, preferred locale, auth module used, etc.)
    !!!*** Now, the problem part ***!!!
    8) And then "sunmail" POSTs a broken cookie to "psam" (note the space in mid-text, where the "plus" sign was previously). As we know, "+" is often used in URLs to "escape" the space character. Perhaps some URL cleanup routine backfired here.
    I have double-checked, it is not the reverse proxy on "psam" breaking things. It is "sunmail" (UWC/CE or Policy Agent, don't know for certain) supplying the broken request. I looked over the large XML responses to the two previous requests, whenever they mention the session cookie value, the "plus" is there.
    For the most detail I can provide, I'll even paste the whole HTTP packet:
    POST /amserver/sessionservice HTTP/1.1
    Proxy-agent: Sun-Java-System-Web-Server/7.0
    Cookie: iPlanetDirectoryPro=AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1 xTqH7C3I=@AAJTSQACMDI=#;amlbcookie=null
    Content-type: text/xml;charset=UTF-8
    Content-length: 336
    Cache-control: no-cache
    Pragma: no-cache
    User-agent: Java/1.5.0_09
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Host: cos-psam-01.domain.ru
    Client-ip: 194.xxx.xxx.xxx
    Via: 1.1 https-weblb.domain.ru
    Connection: keep-alive
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RequestSet vers="1.0" svcid="session" reqid="258">
    <Request><![CDATA[<SessionRequest vers="1.0" reqid="254">
    <GetSession reset="true">
    <SessionID>AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1 xTqH7C3I=@AAJTSQACMDI=#</SessionID>
    </GetSession>
    </SessionRequest>]]></Request>
    </RequestSet> The server's error response is apparent:
    HTTP/1.1 200 OK
    Server: Sun-Java-System-Web-Server/7.0
    Date: Thu, 31 Jul 2008 05:49:50 GMT
    Content-type: text/html
    Transfer-encoding: chunked
    19b
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResponseSet vers="1.0" svcid="session" reqid="258">
    <Response><![CDATA[<SessionResponse vers="1.0" reqid="254">
    <GetSession>
    <Exception>AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1 xTqH7C3I=@AAJTSQACMDI=# Invalid session ID
    AQIC5wM2LY4SfcwuT2ASCrsfO78nXdceEHXeH1 xTqH7C3I=@AAJTSQACMDI=#</Exception>
    </GetSession>
    </SessionResponse>]]></Response>
    </ResponseSet>On the few occasions when the AM cookie contains no "plus" characters, the SSO works like a charm (also checked by a sniffer). Whenever there is a "plus", it breaks.
    For reference, here's a working final request-response (one with a good cookie, as received by the load-balancer web-server). Request looks a bit different:
    POST /amserver/sessionservice HTTP/1.1
    Cookie: iPlanetDirectoryPro=AQIC5wM2LY4Sfcy/5sEzVmuq9z1ggdHOkBDgVFAwfhqvn4U=@AAJTSQACMDI=#;amlbcookie=null
    Content-Type: text/xml;charset=UTF-8
    Content-Length: 379
    Cache-Control: no-cache
    Pragma: no-cache
    User-Agent: Java/1.5.0_09
    Host: psam.domain.ru
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RequestSet vers="1.0" svcid="session" reqid="281">
    <Request><![CDATA[<SessionRequest vers="1.0" reqid="277">
    <SetProperty>
    <SessionID>AQIC5wM2LY4Sfcy/5sEzVmuq9z1ggdHOkBDgVFAwfhqvn4U=@AAJTSQACMDI=#</SessionID>
    <Property name="uwcstatus" value="active"></Property>
    </SetProperty>
    </SessionRequest>]]></Request>
    </RequestSet> ...and the response is OK:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResponseSet vers="1.0" svcid="session" reqid="281">
    <Response><![CDATA[<SessionResponse vers="1.0" reqid="277">
    <SetProperty>
    <OK></OK>
    </SetProperty>
    </SessionResponse>]]></Response>
    </ResponseSet>

    There have been a few reports of the same behaviour with other customers - specifically with the handling of the encoding of "+" characters to " ". It relates to how cookie encoding/decoding is performed (as you have already observed).
    The solution for these customers was the following:
    => AM server/client side:
    Ensure that com.iplanet.am.cookie.encode=false in AMConfig.properties and AMAgent.properties on all systems.
    => AM client (UWC) side:
    - Set <property name="encodeCookies" value="false"/> in /var/opt/SUNWuwc/WEB-INF/sun-web.xml. This will prevent UWC from trying to urldecode the cookie it receives and therefore stops it turning the + into a space e.g.
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 Servlet 2.3//EN' 'file:///net/wajra.india.sun.com/export/share/dtd/sun-web-app_2_3-1.dtd'>
    <sun-web-app>
       <property name="encodeCookies" value="false"/>
       <session-config>
          <session-manager/>
       </session-config>
       <jsp-config/>
    <property name="allowLinking" value="true" />
    </sun-web-app>Regards,
    Shane.

  • My husband bought an imac for the first time.  We backed up our separate itunes libraries on external hard drive but when it was retrieved, the 2 libraries had merged and they only appear in my husbands area.  How do we split them back up again?

    Really need some help here.  We got the guys at PC World to back up our old computer onto and external hard drive, but our libraries merged.  I've tried retrieving the whole thing from the external hard drive but can't seem to identify any files to retrieve.  If I could copy the whole thing into my area, we could both just erase the things from each others' libraries that we didn't want.  We are imac virgins, and need some advice!

    if it's content purchased from the iTunes store we're talking about, the following script will help to tell the files apart:
    Track Down Purchases 
    This script will examine each track in a selection of tracks or a selected playlist to determine if it was purchased from the iTunes Store and then copies it to a discrete playlist named for the person who purchased it, eg: "Steve Ballmer's Purchased Music". Recognizes song, video, and audiobook purchases. Purchaser information is gleaned by examining the track's file, which, depending on file location and access speed, can take as long a second per track.
    for content you added manually (i.e. CD rips), i don't know of any easy way once the libraries were merged.

  • How do I store VI References in global variables and access them later

    From what I know, Labview automatically deletes VI references when they go out of use. Is there a way for me to override this so that I can access a set of preloaded references in a separate VI? Essentially I would like to open the VI's dynamically into the memory, store the references in global variables and access them at a later time. The VI's I'm referencing won't be known until runtime. I know its not the safest way to do it, but it would be the most productive on my end.
    Thank you
    Clay Upton

    I'm not sure what you mean by "a later time", but a VI reference will remain valid as long as the VI is in memory. If you don't unload the VIs, the references will remain valid.
    If you do need to unload the VIs, for whatever reason, I would suggest the following:
    Create a functional global as your interface for obtaining the references.
    Feed the paths to the VIs into the VI when initializing it (since you don't know which VIs in advance).
    When calling the VI to obtain the references, have the VI check them first (using the Not a Number... primitive). If it sees that they're invalid, it can open a new reference and return that.
    You should note that when a VI is removed from memory, the data space is used is released, so if those VIs are expected to hold data (using shift registers, etc.) this will be a problem.
    The description I've given will only be usable in certain instances (and it has its intricacies), but you didn't really give any details about what you're actually trying to accomplish.
    Try to take over the world!

  • Office 2010 & 2007 - Excel and Access File Locking Out On the Network With Multiple Users

    This is also posted in the Office 2010 - IT Pro General Discussions, but was suggested to repost here, since a definitive answer was not found.
    Hi,
    An issue that's happening is that Excel and Access files are locking on the network. We're currently using Office 2007 and 2010.
    Here are some different scenarios that are happening:
    When opening the file it is locked out by “User X” which is the person that has the file locked out and no one else can open the file.
    When opening the file it is locked out by “User Y” which is NOT the actual person, but is locked out by “User X” and no one else can access the file.
    When opening the file  it is locked out by “…another user” which is generic and no one else can access the file.
    The two more common events are incident 1 and 2 with 3 happening the less common.
    This message will continue until the sessions are closed through computer management on the file server.
    The file server is running Windows Server 2003.
    This does happen on both Windows XP and Windows 7 clients.
    This does happen for users using Office 2007 and Office 2010.
    There are two sets of Office 2010 Users when it comes to patches. Everyone has the most current patches with Office 2010 SP2 while anyone that has Microsoft Project 2010 is using all the current update before Office 2010 SP2.
    All users that are using Office 2007 have all the current patches and service packs.
    Another variable is that we have users that will leave a file open on the network for 3+ days and after a while it will lock the file out.
    Also we have Shadow Copy that runs daily on the system which I'm not for sure if that impacts anything if a file is opening during that time.
    Any ideas on how to mitigate the lock out issues would be appreciated.
    Thanks,
    Binary Process
    Edit November 12, 2013: This issue can occur if and if not another person actually has the file open. If the person doesn't have the file open then there is a hung connection which needs to be disconnected by going to the Computer Management of the File
    server.

    Hi Binary,
    I know that the description of the hotfix does not relate to the issue. The purpose is to install it for upgrading SMB related file.
    A similar issue I encountered before:
    http://social.technet.microsoft.com/Forums/windowsserver/en-US/b7fcc59b-52d9-4a02-863a-1a529bcb8cb1/temp-doc-etc-files-dont-close-after-a-file-closes-this-causes-locked-files?forum=winserverfiles
    It is resolved by upgrading SMB files so maybe it will help on your case.
    Another hotfix which may related:
    http://support.microsoft.com/kb/983458
    If you have any feedback on our support, please send to [email protected]

  • LV 8.2 won't associate with VIs and uses 7.1 RTE?!?!

    Hi,
    I'm in the process of creating a new exe of our project. A strange thing keeps happening and I don't know what's wrong. I had LV 7.1 installed on the machine, as well as LV 8.2 to transition to the new version. I created an .lvproj and built a new .exe of our application. Lo and behold, it flashes the LV 7.1 flash screen and then asks me to select the VI I want to run, when i select the main VI of the application, it simply gives me an Error 9 message and says that that vi is compiled in version 8.2 of LV and won't open. I tried right-clicking on a vi and trying to force it to associate with 8.2, that didn't work. I uninstalled 7.1 and the 7.1 RTE entirely and when I try to run my LV 8.2 built exe it STILL manages to use the 7.1 run time from somewhere.
    After that I tried to re-associate them with 8.2 yet again to no avail. When i run my exe it just tries to open them in the non-existing 7.1 RTE and re-associates them all with 7.1. Please help, i think this is a bug.

    Justin,
    Thanks for the reply. I do understand how bizzare this must seem to you, I had the same reaction. I know perfectly well the behavior of LV built exe, been using it for 5 years. The problem here is the bizzare behavior of the .exe (any in fact, i've built several test vis and exes) on 3 different machines.
    I'll try to explain what's happening:
    1) I create a new project
    2) I add my Test.vi to the project
    3) I set my Test.vi as the startup vi (Test.vi simply calls my main vi via the vi reference).
    4) I build the exe and execute it
    5) Upon execution, an LV 7.1 splash screen pops up for a brief second and I get an Open VI file dialog box asking me to select a VI I want to open, all the VI files inside that window take on the appearance of LV7.1 icons, instead of 8.2. If I try to select a VI from that window, I get LabView load error 9: VI version (8.2) is newer than LabView version (7.1).
    I'm used to that error after you recompile a 7.1 vi to 8.2, but I don't even have LV7.1 installed. It seems like the exe is trying to use LV7.1 RTE to run itself instead of 8.2. I though I have 8.2 RTE automatically installed by LV Dev, but I guess not since it doesn't show in Add/Remove Programs menu, but it DOES show up in MAX under software, go figure. I wish I could get someone in NI to look into this. I've never had a problem like this, it is happening on 3 PCs here and is taking up a lot of work time. I have source code I can send as well as a short video of what's happening on my machine.

  • How can I use an Access front end and Access button to control a LabView Shared variable boolean?

    My company has invested a lot of money on the office network to write many many access databases and front ends. I'm looking for a way to tie a button on an access front end to toggle a LabView boolean shared variable to notify me when they changed something on their side of the network. I'm not seeing anything that helps on a web or forum search. They don't like the idea of a separate labview control that they have to push a button on to let me know.
    Thanks
    Solved!
    Go to Solution.

    Hi Patrick,
    While this is not the intended purpose of Network-Published Shared Variables, you might be able to accomplish this by writing separate accessor VIs for reading from and writing to the variable, making sure to wire the inputs and outputs. Then, you could build a DLL, making sure that you include the accessor VIs as Exported VIs and include the DLL Library in the Always Included section of the DLL Build Specifications. During this process, you will define the function prototype, which will provide the function call, required parameters, and return values. Once the DLL is created, you can then call it and its functions from another programming language (C, C++, C#, VB, etc.). This may or may not work, but it is the only way that I can think of at this point. I have included some references that may help you in this process.
    Building a Shared Library in LabVIEW (White Paper)
    Calling LabVIEW VIs from Other Programming Languages (White Paper)
    Calling LabVIEW DLL From C# (Forum with Examples)
    I hope this helps.
    Regards,
    Mike Watts
    Product Marketing - Modular Instruments

Maybe you are looking for