JWM MenuMaker Wrapper

Joe's Window Manager is a very lightweight WM used by distros such as DSL and Puppy Linux which uses fewer system resources than Openbox and Fluxbox despite coming with its own panel by default. The biggest problem is that it can be quite frustrating to set up an applications menu.
I wrote a shell script wrapper (with a lot of awk) for MenuMaker to extend its compatibility to JWM. It does the same thing as MenuMaker except that it only works for JWM and it adds a few extra shortcuts for convenience. MenuMaker is a dependency. It passes options to MenuMaker so it works the same way except that you should not put "JWM" at the end. MenuMaker only creates static menus, as does my script, so I would recommend keeping jwmmaker and MenuMaker installed for as long as you intend on using JWM.
I recommend installing it by saving a file called jwmmaker.sh somewhere safe (it should stay there as long as you want to keep jwmmaker) with the script below as its contents, and making a symlink to /usr/bin like so:
# ln -s /path/to/jwmmaker.sh /usr/bin/jwmmaker
then you can run jwmmaker like so:
$ jwmmaker [options]
Here is how I would do it:
$ jwmmaker -vf
Here is one way to view the MenuMaker help file plus a few distinctions regarding jwmmaker:
$ jwmmaker -h
Here is the script:
#!/bin/sh
# jwmmaker 0.1.0
# Copyright 2014 Drew Nutter
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Initialize variables
h=0
ii=0
f=0
c=0
t=0
v=0
lo=""
so=""
term=""
categ=""
arg=$(echo $@ | sed 's/f//') # This avoids a force overwrite of the openbox menu if the user has one already.
# Identify options that affect this script's behavior (other than passing).
for (( i=1; $i<=$#; i++ )); do
iter=${!i}
if [ "${iter:0:2}" == "--" ]; then
if [ "$iter" == "--help" ]; then
h=1
elif [ "$iter" == "--version" ]; then
v=1
elif [ "$iter" == "--force" ]; then
f=1
elif [ "$iter" == "--stdout" ]; then
c=1
fi
elif [ "${iter:0:1}" == "-" ]; then
string=${!i}
for (( j=1; j<${#string}; j++ )); do
opt=${string:$j:1}
if [ "$opt" == "h" ]; then
h=1
elif [ "$opt" == "f" ]; then
f=1
elif [ "$opt" == "c" ]; then
c=1
elif [ "$opt" == "i" ]; then
ii=1
elif [ "$opt" == "t" ]; then
t=1
fi
done
fi
done
# Determine whether .jwmrc exists to determine source.
# /etc/system.jwmrc will not be modified, but it will be used to create the new .jwmrc if ~/.jwmrc does not exist.
if [ $HOME/.jmwrc ]; then
jwmrc="$HOME/.jwmrc"
else
jwmrc="/etc/system.jwmrc"
fi
# Main function, call later on depending on options
function main
# Pull pre-menu jwmrc
out1=$(awk '
BEGIN { dontprint = 0 }
if (dontprint == 0)
print $0
if ($1 == "<RootMenu")
dontprint = 1
}' $jwmrc)
# Generate jwmrc menu from mmaker's openbox menu
out2=$(mmaker -ci $arg openbox | awk '
BEGIN {
FS = "[<>/=]"
indent = " "
print indent "<Program label=\"Run\">gmrun</Program>"
print indent "<Separator/>"
print indent "<Program label=\"Terminal\">xterm</Program>"
print indent "<Program label=\"Web Browser\">xdg-open http://</Program>"
print indent "<Program label=\"File Manager\">xdg-open $HOME</Program>"
print indent "<Separator/>"
if ($2 == "menu id")
print indent"<Menu label="$4">"
indent = " "indent
if ($3 == "menu")
indent = substr(indent,5)
print indent"</Menu>"
if ($2 == "item label")
printf indent"<Program label="$3">"
if ($2 == "execute")
print $3"</Program>"
END{
print indent "<Separator/>"
print indent "<Menu label=\"Exit\">"
print indent " <Program icon=\"lock.png\" label=\"Lock\">"
print indent " xscreensaver-command -lock"
print indent " </Program>"
print indent " <Separator/>"
print indent " <Program label=\"Reboot\">reboot</Program>"
print indent " <Program label=\"Shut Down\">shutdown now</Program>"
print indent " <Separator/>"
print indent " <Restart label=\"Restart JWM\" icon=\"restart.png\"/>"
print indent " <Exit label=\"Exit JWM\" confirm=\"true\" icon=\"quit.png\"/>"
print indent "</Menu>"
# Pull post-menu jwmrc
out3=$(awk '
BEGIN { dontprint = 1 }
if ($1 == "</RootMenu>")
dontprint = 0
if (dontprint == 0)
print $0
}' $jwmrc)
# -h or --help = show help, cancel operation
if [ $h == 1 ]; then
echo -e "JWM has a file (~/.jwmrc) which configures more than just the JWM menu. This script does not alter any part of that file except the menu.\n"
echo "Below is the help file generated by MenuMaker which is installed on your system. Please ignore the \"frontend\" information. Use jwmmaker like so:"
echo -e "$ jwmmaker [options]\n"
mmaker -h
echo -e "\nAbove is the help file generated by MenuMaker which is installed on your system. Please ignore the \"frontend\" information. Use jwmmaker like so:"
echo -e "$ jwmmaker [options]\n"
elif [ $v == 1 ]; then
echo "jwmmaker 0.1.0"
mmaker --version
# Print new xml data based on mmaker analogous user input.
else
if [ $ii == 0 ] && [ $c == 1 ]; then # -c = show output
main
echo "$out1"
echo "$out2"
echo "$out3"
elif [ $c == 1 ]; then # -ci = show only menu output
main
echo "$out2"
elif [ $ii == 1 ]; then # -i = show error message, do not overwrite
echo "-i MUST be used in conjunction with -c; this is done to prevent accidental overwriting of the custom menu"
elif [ $f == 1 ] || [ $jwmrc == "/etc/system.jwmrc" ]; then # If -f or no jwmrc file, $ jwmmaker = write to .jwmrc
cp $HOME/.jwmrc $HOME/.jwmrc.bak 2> /dev/null # Create backup for .jwmrc if it exists
main
echo "$out1" > $HOME/.jwmrc
echo "$out2" >> $HOME/.jwmrc
echo "$out3" >> $HOME/.jwmrc
else # If .jwmrc exists, $ jwmmaker = do nothing, require -f
echo "You already have a .jwmrc file. Its menu section will not be overwritten unless you delete it or use the -f flag."
fi
if [ $c = 1 ]; then # If -c is chosen, put this is at bottom so user can immediately see if there were any errors.
nov=$(echo $@ | sed 's/v//') # No need to double up on verbosity.
mmaker -c $nov openbox > /dev/null
fi
fi
Every time it overwrites the .jwmrc file, it automatically creates (or overwrites) a backup of the previous version in your home directory called .jwmrc.bak. I also added some shortcuts to the main menu by default to improve the convenience of the menu. A few of these shortcuts rely on your system having one of the following packages installed, so these are optional dependencies:
gmrun
xdg-utils
xscreensaver
As I was testing it I ran into some problems regarding how options are passed based on how the arguments are put together by the user. I fixed every issue that I found, but there is a possibility I missed something, so please report any bugs to this thread so I can fix them. I am not a professional software developer, so you might find ways to be more stable or efficient. I'd be more than happy to accept community input to improve this.
COPYING: GPLv3
MenuMaker is licensed under the two clause BSD license.
Last edited by Drew (2014-10-20 19:15:05)

Joe's Window Manager is a very lightweight WM used by distros such as DSL and Puppy Linux which uses fewer system resources than Openbox and Fluxbox despite coming with its own panel by default. The biggest problem is that it can be quite frustrating to set up an applications menu.
I wrote a shell script wrapper (with a lot of awk) for MenuMaker to extend its compatibility to JWM. It does the same thing as MenuMaker except that it only works for JWM and it adds a few extra shortcuts for convenience. MenuMaker is a dependency. It passes options to MenuMaker so it works the same way except that you should not put "JWM" at the end. MenuMaker only creates static menus, as does my script, so I would recommend keeping jwmmaker and MenuMaker installed for as long as you intend on using JWM.
I recommend installing it by saving a file called jwmmaker.sh somewhere safe (it should stay there as long as you want to keep jwmmaker) with the script below as its contents, and making a symlink to /usr/bin like so:
# ln -s /path/to/jwmmaker.sh /usr/bin/jwmmaker
then you can run jwmmaker like so:
$ jwmmaker [options]
Here is how I would do it:
$ jwmmaker -vf
Here is one way to view the MenuMaker help file plus a few distinctions regarding jwmmaker:
$ jwmmaker -h
Here is the script:
#!/bin/sh
# jwmmaker 0.1.0
# Copyright 2014 Drew Nutter
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Initialize variables
h=0
ii=0
f=0
c=0
t=0
v=0
lo=""
so=""
term=""
categ=""
arg=$(echo $@ | sed 's/f//') # This avoids a force overwrite of the openbox menu if the user has one already.
# Identify options that affect this script's behavior (other than passing).
for (( i=1; $i<=$#; i++ )); do
iter=${!i}
if [ "${iter:0:2}" == "--" ]; then
if [ "$iter" == "--help" ]; then
h=1
elif [ "$iter" == "--version" ]; then
v=1
elif [ "$iter" == "--force" ]; then
f=1
elif [ "$iter" == "--stdout" ]; then
c=1
fi
elif [ "${iter:0:1}" == "-" ]; then
string=${!i}
for (( j=1; j<${#string}; j++ )); do
opt=${string:$j:1}
if [ "$opt" == "h" ]; then
h=1
elif [ "$opt" == "f" ]; then
f=1
elif [ "$opt" == "c" ]; then
c=1
elif [ "$opt" == "i" ]; then
ii=1
elif [ "$opt" == "t" ]; then
t=1
fi
done
fi
done
# Determine whether .jwmrc exists to determine source.
# /etc/system.jwmrc will not be modified, but it will be used to create the new .jwmrc if ~/.jwmrc does not exist.
if [ $HOME/.jmwrc ]; then
jwmrc="$HOME/.jwmrc"
else
jwmrc="/etc/system.jwmrc"
fi
# Main function, call later on depending on options
function main
# Pull pre-menu jwmrc
out1=$(awk '
BEGIN { dontprint = 0 }
if (dontprint == 0)
print $0
if ($1 == "<RootMenu")
dontprint = 1
}' $jwmrc)
# Generate jwmrc menu from mmaker's openbox menu
out2=$(mmaker -ci $arg openbox | awk '
BEGIN {
FS = "[<>/=]"
indent = " "
print indent "<Program label=\"Run\">gmrun</Program>"
print indent "<Separator/>"
print indent "<Program label=\"Terminal\">xterm</Program>"
print indent "<Program label=\"Web Browser\">xdg-open http://</Program>"
print indent "<Program label=\"File Manager\">xdg-open $HOME</Program>"
print indent "<Separator/>"
if ($2 == "menu id")
print indent"<Menu label="$4">"
indent = " "indent
if ($3 == "menu")
indent = substr(indent,5)
print indent"</Menu>"
if ($2 == "item label")
printf indent"<Program label="$3">"
if ($2 == "execute")
print $3"</Program>"
END{
print indent "<Separator/>"
print indent "<Menu label=\"Exit\">"
print indent " <Program icon=\"lock.png\" label=\"Lock\">"
print indent " xscreensaver-command -lock"
print indent " </Program>"
print indent " <Separator/>"
print indent " <Program label=\"Reboot\">reboot</Program>"
print indent " <Program label=\"Shut Down\">shutdown now</Program>"
print indent " <Separator/>"
print indent " <Restart label=\"Restart JWM\" icon=\"restart.png\"/>"
print indent " <Exit label=\"Exit JWM\" confirm=\"true\" icon=\"quit.png\"/>"
print indent "</Menu>"
# Pull post-menu jwmrc
out3=$(awk '
BEGIN { dontprint = 1 }
if ($1 == "</RootMenu>")
dontprint = 0
if (dontprint == 0)
print $0
}' $jwmrc)
# -h or --help = show help, cancel operation
if [ $h == 1 ]; then
echo -e "JWM has a file (~/.jwmrc) which configures more than just the JWM menu. This script does not alter any part of that file except the menu.\n"
echo "Below is the help file generated by MenuMaker which is installed on your system. Please ignore the \"frontend\" information. Use jwmmaker like so:"
echo -e "$ jwmmaker [options]\n"
mmaker -h
echo -e "\nAbove is the help file generated by MenuMaker which is installed on your system. Please ignore the \"frontend\" information. Use jwmmaker like so:"
echo -e "$ jwmmaker [options]\n"
elif [ $v == 1 ]; then
echo "jwmmaker 0.1.0"
mmaker --version
# Print new xml data based on mmaker analogous user input.
else
if [ $ii == 0 ] && [ $c == 1 ]; then # -c = show output
main
echo "$out1"
echo "$out2"
echo "$out3"
elif [ $c == 1 ]; then # -ci = show only menu output
main
echo "$out2"
elif [ $ii == 1 ]; then # -i = show error message, do not overwrite
echo "-i MUST be used in conjunction with -c; this is done to prevent accidental overwriting of the custom menu"
elif [ $f == 1 ] || [ $jwmrc == "/etc/system.jwmrc" ]; then # If -f or no jwmrc file, $ jwmmaker = write to .jwmrc
cp $HOME/.jwmrc $HOME/.jwmrc.bak 2> /dev/null # Create backup for .jwmrc if it exists
main
echo "$out1" > $HOME/.jwmrc
echo "$out2" >> $HOME/.jwmrc
echo "$out3" >> $HOME/.jwmrc
else # If .jwmrc exists, $ jwmmaker = do nothing, require -f
echo "You already have a .jwmrc file. Its menu section will not be overwritten unless you delete it or use the -f flag."
fi
if [ $c = 1 ]; then # If -c is chosen, put this is at bottom so user can immediately see if there were any errors.
nov=$(echo $@ | sed 's/v//') # No need to double up on verbosity.
mmaker -c $nov openbox > /dev/null
fi
fi
Every time it overwrites the .jwmrc file, it automatically creates (or overwrites) a backup of the previous version in your home directory called .jwmrc.bak. I also added some shortcuts to the main menu by default to improve the convenience of the menu. A few of these shortcuts rely on your system having one of the following packages installed, so these are optional dependencies:
gmrun
xdg-utils
xscreensaver
As I was testing it I ran into some problems regarding how options are passed based on how the arguments are put together by the user. I fixed every issue that I found, but there is a possibility I missed something, so please report any bugs to this thread so I can fix them. I am not a professional software developer, so you might find ways to be more stable or efficient. I'd be more than happy to accept community input to improve this.
COPYING: GPLv3
MenuMaker is licensed under the two clause BSD license.
Last edited by Drew (2014-10-20 19:15:05)

Similar Messages

  • What is difference between Iterator and Collection Wrapper?

    Hi all,
                  I dont understand the actual difference between Iterator and Collection Wrapper. I observed both are used for the same purpose. Could any one please let me know when to use Collection Wrapper and when to use Iterator??
    Thanks,
    Chinnu.

    L_Kiryl is right.
    Collections support global iteration (through collection->get_next( )) and local iteration (through iterator->get_next( )).
    Each collection has a focus object. Initially, the first object has the focus.
    Any global iteration moves the focus, which is published by the event FOCUS_CHANGED of the collection.
    If you want to iterate on the collection without moving the focus (and without triggering timeconsuming follow-up processes) you can use local iteration. To do so, request an iterator object from the collection and use this to iterate.
    And one more advantage of using iterator: it takes care of deleted entities. If you use global iteration then when you reach deleted entity it will be an exception. But there is no exception with iterator in the same situation.

  • DLL Wrapper works when functions called out of main(), not from elsewhere?

    Hello all,
    I am currently trying the JSAsio wrapper out ( http://sourceforge.net/projects/jsasio )
    Support on this project is nearly unexisting and a lot of people seem to complain that it doesn't work well.
    It works very nicely here, I wrote a few test classes which called some functions (like playing a sound or recording it) and had no problems whatsoever.
    These test classes were all static functions and ran straight out of the main() method and printed some results to the console.
         public static void main(String[] args)
              boolean result = callFunction();
              .. end..
         public static boolean callFunction()
              initASIO();
              openASIOLine();
              return true;
         }The results were all great!
    Then I tried to implement these test classes into my swing-based applications. So I want to call these same functions, as in the test classes, as a result of any user action (for example, selecting the asio driver in a combobox) But then these asio driver functions just stop to work. I get errors saying that the ASIO driver is not available. (meaning that the dll wrapper loads the wrong asio driver or can't load one at all)
    The library path and classpath are all set correctly, exactly the same as the test classes. Even copied the test code word for word in to my swing applications but it still will not work. I am calling these functions in a new Thread, and even put them in a static methods to try and get that working. When calling these asio methods from the main() method AFTER I set up my components gives me the desired results as well. But as soon as I call these same methods (which are in the same class) from a swing event, it fails;
    public class ASIOTest
         public static void main(String[] args)
              ASIOTest test = new ASIOTest();
              test.callFunction(); // <-- WORKS
         public ASIOTest()
              initializeComponents();
         private void initializeComponents()
              frame = new JFrame();
              choices = new JComboBox();
              choices.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event)
                     // user made selection
                    new Thread(
                            new Runnable() {
                                public void run() {
                                    try
                                         callFunction(); // <-- DOES NOT WORK
                                    catch (Exception e)
                                        e.printStackTrace();
                            }).start();
         public void callFunction()
              initASIO();
              openASIOLine();
    }Is there something fundamental I am missing here?
    For what reasons can an application which uses JNI functions go wrong when working in a swing enviroment? (and out of a static context, although this does not seem to make any difference, eg. when calling these functions from static methods inside another class, inside a new thread when the user has generated an event)
    I am hoping someone could point me in the right direction :-)
    Thank you in advance,
    Steven
    Edited by: dekoffie on Apr 21, 2009 11:11 AM
    Edited by: dekoffie on Apr 21, 2009 11:16 AM

    jschell wrote:
    Two applications.
    And you probably run them two different ways.
    The environment is different so one works and the other doesn't.Thank you for your fast reply!
    Well, I am running the "updated" version from the same environment; I copied the jframe, and a jcombobox into my original test class which only ran in the java console. Consider my second code example in my original post as the "updated" version of the first code example. And as I pointed out, it works fine when I call the jni functions in the main method, but not when I call it from inside the ActionListener.
    Or am I again missing something essential by what you mean with a different environment? The classpath and the working directory is exactly the same, as is the Djava.library.path option. :-)
    Thanks again!

  • PreparedStatement ResultSet wrapper to auto close cursor

    Hi !
    Is it possible to create wrapper that will automatically close result set and prepared statements ?
    I am sick of closing resultsets and preparedstatements in all my dao objects. Its all about neverending try catch and close code lines, it is all against the java garbage collector idea.
    Do you have any workaround ? Or I need to use with those try catch and close.
    Thanks !

    when u allocate object u dont need to call free nor destory when u dont need the object anymore.
    on the other hand, you need to call .close() when u dont need the prepared statement anymore

  • CR Server 2008 / Using openDocument interface with a no-logon wrapper

    Hi, all!
    I had a problem with the openDocument.jsp interface and a no-logon wrapper which took me quite a while to figure out. I'm now posting these results here in the hopes that someone else will find them useful. Of course, if anyone has input how to improve the solution, it's also welcome!
    The system on which this was developed and tested was a vanilla Crystal Reports Server 2008 installation on Tomcat / MySQL / Windows Server 2003.
    The problem was that calls to openDocument interface left sessions open and this quickly led to the situation where all the concurrent access licenses (CALs) were used. It seemed nondeterministic when a session was released; it could have been minutes or hours.
    The solution: write a HTTP session timeout listener which logoffs the CRS-backend session. (The code below has still some dubug output enabled.)
    package fi.niscayah.util;
    import com.crystaldecisions.sdk.framework.IEnterpriseSession;
    import javax.servlet.http.*;
    import java.util.Date;
    import java.util.Enumeration;
    import java.text.SimpleDateFormat;
    public class KillSession implements HttpSessionListener
        public void sessionCreated(HttpSessionEvent event)
            debug("sessionCreated()", event);
        public void sessionDestroyed(HttpSessionEvent event)
            HttpSession session = event.getSession();
            try {
                java.util.Enumeration name = session.getAttributeNames();
                while (name.hasMoreElements()) {
                    String attributeName = (String)name.nextElement();
                    Object attribute = session.getAttribute(attributeName);
                    if((attribute != null) && (attribute instanceof IEnterpriseSession)) {
                        debug("  attribute : " + attributeName);
                        debug("  type      : " + attribute.getClass().getName());
                        IEnterpriseSession ies = (IEnterpriseSession)attribute;
                        ies.logoff();
                debug("sessionDestroyed()", event);
            } catch (Exception ex) {
                debug("sessionDestroyed() exception");
        private void debug(String msg)
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            String timestamp = sdf.format(new Date());
            System.err.println("[KillSession] [" + timestamp + "] " + msg);
        private void debug(String msg, HttpSessionEvent event)
            HttpSession session = event.getSession();
            String id = session.getId();
            String context = session.getServletContext().getServletContextName();
            debug("[" + context + "] [" + id + "] " + msg);
    (If you want to test the above code, create a .jar package out of it and put it in webapps/OpenDocument/WEB-INF/lib.)
    Next we need to register our listener. I noticed that the openDocument-webapp's web.xml-file already contained a listener definition that claimed to expire enterprise sessions on HTTP timeout. I never saw such results; I tested it by registering my own listener, which only outputted debug information, and then when ever a session timeout happened, I checked the amount of licenses in use via the CMC - it never dropped predictably.
    So, comment out the SessionCleanupListener and add KillSession.
    <!-- SK: Added own listener. -->
    <listener>
        <listener-class>fi.niscayah.util.KillSession</listener-class>
    </listener>
    <!-- SK: Commented out. -->
    <!-- SessionCleanupListener is used to expire the EnterpriseSession when the web session is timeout -->   
    <!-- <listener>
        <listener-class>com.businessobjects.sdk.ceutils.SessionCleanupListener</listener-class>
    </listener> -->
    After the above, change the HTTP session timeout to something more suitable. If you're creating really big reports, one minute might be too little. Also notice, that the value is an approximation. The timeout event might happen just as one minute has passed, but usually it takes more.
    <session-config>
        <session-timeout>1</session-timeout>
    </session-config>
    Now we're good to go and test the openDocument interface. The result should be that every time a HTTP session timeouts, an enterprise session (which was initialized via the openDocument call) is logged off.
    Next the no-logon wrapper.
    I found a lot of examples for logging in automatically, but every one of them exhibited a strange behavior (at least when used in conjunction with the openDocument interface) where the session count was increased by two. A lot of head scratching later, the solution below was devised.
    <%@ page language="java"
        import = "com.crystaldecisions.sdk.framework.CrystalEnterprise,
                  com.crystaldecisions.sdk.framework.IEnterpriseSession,
                  com.crystaldecisions.sdk.framework.ISessionMgr,
                  com.crystaldecisions.sdk.exception.SDKException"
    %>
    <%
    ISessionMgr sessionManager = CrystalEnterprise.getSessionMgr();
    IEnterpriseSession entSession = sessionManager.logon("Guest", "", "<server>:6400", "secEnterprise");
    String entToken = entSession.getLogonTokenMgr().createWCAToken("", 1, 1);
    // So that this can be logged off when the session timeouts
    HttpSession httpSession = request.getSession();
    httpSession.setAttribute("nologon_SESSION", entSession);
    String query = request.getQueryString();        
    String redirectURL = "http://<server>:8080/OpenDocument/opendoc/openDocument.jsp?" +
        query + "&token=" + entToken;
    response.sendRedirect(redirectURL);
    %>
    You can put the above .jsp-file where you like, but I dropped it in webapps/openDocument, since it's no use by itself.
    The use of nologon.jsp is simple: use it as you would openDocument.jsp.
    And there you have it. A word of warning though, if you're not sure what you're doing, I wouldn't recommend trying these things out. And you certainly shouldn't deploy these on a production environment.
    As said before, any input is welcome!

    I'll comment on the BusinessObjects Enterprise logon tokens that you may generate via the Enterprise SDK.
    DefaultToken - this is used for failover - i.e., if the original EnterpriseSession object is destroyed without having logoff() method invoked, the failover can be used to re-connect to Enterprise without redo-ing authentication.  This token is immediately invalidated with EnterpriseSession.logoff().
    CreateLogonToken - token represents an EnterpriseSession independent of the original EnterpriseSession that generates it.  So you should generated the CreateLogonToken and log off the EnterpriseSession before using the token, or you'll have two licenses being used.
    CreateWCAToken - the Web Component Adapter token - this token is tied to the EnterpriseSession used to create it.  If this EnterpriseSession is invalidated, the WCA token can no longer be used.  Since this is essentially re-use of the original EnterpriseSession, license count is not increased with its use.
    So in your application, you're generating the WCA Token, and using the Session Listener to explicitly log off the originating EnterpriseSession.  The SessionCleanupListener is for cleaning up sessions created within InfoView on Web Application Server Session timeout.
    Sincerely,
    Ted Ueda

  • Do I need a C wrapper for my C++ API?

    I will be using LabVIEW to call a telemetry API.  There is a remote server which receives data and then relays it on to the clients.
    My LabVIEW program will be a client which communicates to the remote server using an API in the form of a .dll, I'll call it acquire.dll for the purpose of this conversation.  The programmer that maintains the server program and the acquire.dll does not want me to directly interface with the server via TCP/IP, he wants me to use acquire.dll to send arguments to the server and then receive data.  That way he can change the interface if needed without breaking my program.
    Acquire.dll has about 25 public functions.  It is written in C++, compiled with MS Visual Studio (2010 I think).  Acquire.dll searches the net for available servers, opens an object with the server, queries for a list of parameters available on the server, sends a list of parameters to acquire, gets calibration data from the server, reads data from the server, stops and resumes the read, and closes out the connection to the server when done.
    There are a few main read types.  I can tell the server to send data at a certain rate (up to 100 Hz), I can tell the server to send me a set of data every time it has a new value for a particular trigger parameter, or I can do manual polling where I just get the current values when I ask for them.
    Typical inputs are pointers to a null terminated string, bool, integers, float, double float, etc...
    Typical outputs are pointers to null terminated strings, integers, and pointers to binary data read by the acquire.dll. There is also a struct consisting of two integers.
    I am not a C or C++ programmer.  My programming experience is limited to LabVIEW and long ago, Fortran and VBA macros.  I do however have a couple C/C++ programmers available to me.  What is the best way to go about programming the interface?
    Can I directly interface with the C++ .dll?  Can I pass these data types directly into the library?  Can the import library function handle the inputs and outputs automatically, or would I need something like the MoveBlock function to read memory from pointers?  Can LabVIEW write my input data to ram and provide the dll with pointers to the strings and integers in a format that is compatible with C++ (null terminated)?
    Would I be much further ahead to write a C wrapper to interface to the C++ library?  Is it possible to get by without a wrapper?  Would the data types I mentioned be ok to interface with LabVIEW or should I be going for something simpler?       
    Any advice to send me down on a path towards success would be appreciated.  Unfortunately, my company would not allow me to share any of their code, so I am a bit on my own to sort this out.  I've been reading everything Ic an find on the topic and playing with all the examples I can find.  I am pretty certain that I will need a C wrapper to avoid issues with names decorations and the like.  I tried already to import my C++ dll and I can't see any of the functions.  So, at a minimum, it would have to be recompiled.
    https://forums.ni.com/t5/LabVIEW/Problem-making-a-C-DLL-in-Visual-Studio-2010-work-in-LabView/td-p/1...
    http://forums.ni.com/t5/LabVIEW/using-dll-class-based/m-p/452045 
    http://www.ni.com/white-paper/3056/en/
    https://decibel.ni.com/content/docs/DOC-9080
    https://decibel.ni.com/content/docs/DOC-9091
    -Chris.  

    If you can provide the function prototypes for the functions you want to call, that would help answer your questions with some specificity, and without your company revealing any of the logic. If that's still an issue, you can rename the functions and parameters. What's important is the datatypes.
    It sounds like your DLL only uses standard C datatypes (except bool, which is probably an integer). If so, then you don't need a C wrapper, because all the data types are ones that LabVIEW can already handle. The DLL programmer should declare all the functions as 'extern "C"' to avoid name mangling. Also make sure the C programmer didn't actually give you a .NET assembly or ActiveX component, which you could use in LabVIEW but through a different interface. That's a common reason why you can't see the functions you expect in a DLL.
    The Shared Library Import tool has improved and can handle many types of data, including some clusters/structures. Whether or not you'll need MoveBlock depends on exactly how the data is structured; there's no way to tell without more details. LabVIEW can definitely pass pointers to integers and strings to a DLL. For a block of arbitrary data, you'll need to allocate the array in LabVIEW (usually using Initialize Array) and then have logic in your LabVIEW code to interpret that data. You may need to swap endian-ness to get meaningful values.
    Again, if you can post actual function prototypes, even with the function and parameter names changed, that will make it possible to provide better help.

  • How does the wrapper work?

    I'm slowly building my 1st CSS site but have not been able to figure out why the wrapper fails to enclose everything.
    I'm wanting the header, nav bar and contents to go inside it, to allow me to place a bg image for all of them.
    At the moment there is a gap between the contents and wrapper - which has the nav bar inside it.
    How do I make the wrapper hold all of these?
    Many thanks for any advice.
    Paul
    /* CSS Document */
    body
        background-image: url(images/testbluebg.jpg);
        background-repeat: no-repeat;   
    #wrapper
        width:750px;
        height:auto;
        margin:auto;
        padding-left:7px;
        padding-bottom:0;
        padding-right:7px;
    #navcontainer
        font-family: Arial,Sans-Serif;
        text-align:right;
        margin-top:45px;
        padding:10px 30px 0 0 ;
        width:auto;
    #nav {
        width: 750px;
        text-align:center;
        padding: 10px;
        margin-top: 1px;
        float: left;
    removed from this post
    #header{
        width:400px;
        height:78px;
        font-size:48px;
        margin-top:65px;
        width:auto;
        font-family:Georgia, "Times New Roman", Times, serif;
        color:#99FF00;
        text-align:center;
        float:left;
    #content
    width:750px;
    margin:auto;
    float:left;
    font-family:Georgia, "Times New Roman", Times, serif;
    font-size:14px;
    word-spacing:2px;
    color:#FF9900;
    margin-top:65px;
    padding-left:7px;
    padding-bottom:0;
    padding-right:7px;
    text-align:left;
    #footer
    width:750px;
    margin:auto;
    font-family:"Times New Roman", Times, serif;
    font-size:16px;
    text-style:bold;
    color:#FFFFFF;
    text-align:center;
    padding-top:22px;
    HTML
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>TILLY</title> 
    <link href="highslide.css" rel="stylesheet" type="text/css">
    <script type="text/javascript" src="highslide/highslide-with-gallery.js"></script>
    <script type="text/javascript" src="highslide/highslide.config.js" charset="utf-8"></script>
    <link rel="stylesheet" type="text/css" href="highslide/highslide.css" />
    <!--[if lt IE 7]>
    <link rel="stylesheet" type="text/css" href="highslide/highslide-ie6.css" />
    <![endif]--> 
    <link href="delete.css" rel="stylesheet" type="text/css">
    </head> 
    <body>
    <div id="wrapper">
    <div id="navcontainer">
    <ul id="navlist">
    <li id="active"><a href="TILLY.htm" id="current">home</a></li>
    <li><a href="TRAINING.htm">training</a></li>
    <li><a href="#">boarding</a></li>
    <li><a href="#">behaviour</a></li>
    <li><a href="#">testimonials</a></li>
    <li><a href="mailto:@@@@btinternet.com">contact</a></li> 
    </ul> 
    </div>
    <div id="header">Janet Ardley 
    <div id="content"> 
    <p> Owning a dog can be one of the most rewarding things you will ever do.
    The love and affection you receive is something special.But the obediance and behaviour doesn't always happen easily. </p>
    <p>And that's where I come in.</p>
    <p>The experiance I offer has been built up over years of working with a whole variety of breeds - and numerous problems!  </p>
    <p>I offer what I consider is a unique service for you and your dog.</p> 
    <h3> </h3>
    <div class="highslide-gallery" style="width: 560px; margin: 0 auto;">
        <ul>
        <li>
        <a href="highslide/images/large/TILLY5.jpg" class="highslide"
                title="Dog Tired"
                onclick="return hs.expand(this, config1 )">
            <img src="highslide/images/thumbs/TILLY5.jpg"  alt=""/>
        </a>
        </li>
        <li>
        <a href="highslide/images/large/TILLY3.jpg" class="highslide"
                title="This is the one for me!"
                onclick="return hs.expand(this, config1 )">
            <img src="highslide/images/thumbs/TILLY3.jpg"  alt=""/>
        </a>
        </li>
        <li>
        <a href="highslide/images/large/TILLY4.jpg" class="highslide"
                title="Have I walked in something?"
                onclick="return hs.expand(this, config1 )">
            <img src="highslide/images/thumbs/TILLY4.jpg"  alt=""/>
        </a>
        </li>
        <li>
        <a href="highslide/images/large/TILLY1.jpg" class="highslide"
                title="Jungle"
                onclick="return hs.expand(this, config1 )">
            <img src="highslide/images/thumbs/TILLY1.jpg"  alt=""/>
        </a>
        </li>
        <li>
        <a href="highslide/images/large/TILLY2.jpg" class="highslide"
                title="I can see right up your nose."
                onclick="return hs.expand(this, config1 )">
            <img src="highslide/images/thumbs/TILLY2.jpg"  alt=""/>
        </a>
        </li>
        </ul>
        <div style="clear:both"></div></div> 
    <div id="footer">&copy; TheMagic6  :-p</div>
    <br> 
    </div>
    </div> 
    </div> 
    </body>
    </html>

    The wrapper in Design highlights everything between the body tags in code form.
    Re. extra space top margin of 65px here & there. Yes, I've just been trying things.
    Your comment about the head is interesting.
    I originally had the header with two spans, to use different size fonts. As you can see from the CSS & HTML code I attached, I removed them.
    However, another page still shows what I had:
    <div id="header"><span class="span1">Janet Ardley</span><span class="span3">     dog</span><span class="span2"> trainer  boarder & behaviourist</span></div>
    I'm not sure how this will affect the current issue - but as this is only my 2nd site and the 1st one with CSS, you'll understand that where I'm coming from.
    Thanks again
    Paul

  • What is the proper way to code a "wrapper" class?

    Basically I want to replace an existing Action with a custom Action, but I want the custom Action to be able to invoke the existing Action.
    The following code works fine. I can create a custom Action using the existing action and the text on the button "paste-from-clipboard" is taken from the existing Action. So everything works great as long as the existing Action extends from AbstractAction.
    However the Action interface does not support the getKeys() method which I used to copy the key/value information from the existing action to the wrapped action. So if you try to create a button from some class that strictly implements the Action interface the key/value data in the wrapped Action will be empy and no text will appear on the button.
    So as the solution I thought I would need to override all the methods in the wrapped Action class to invoke the methods from the originalAction object. That is why all the commented code in the class is there. But then the protected methods cause a problem as the class won't compile.
    Do I just not worry about overriding those two methods? Is this a general rule when creating wrapper classes, you ignore the protected methods?
    import java.awt.*;
    import java.awt.event.*;
    import java.beans.*;
    import javax.swing.*;
    import javax.swing.text.*;
    public class WrappedAction extends AbstractAction
         private Action originalAction;
         public WrappedAction(JComponent component, KeyStroke keyStroke)
              Object key = getKeyForActionMap(component, keyStroke);
              if (key == null)
                   String message = "no input mapping for KeyStroke: " + keyStroke;
                   throw new IllegalArgumentException(message);
              originalAction = component.getActionMap().get(key);
              if (originalAction == null)
                   String message = "no Action for action key: " + key;
                   throw new IllegalArgumentException(message);
              //  Replace the existing Action with this class
              component.getActionMap().put(key, this);
              //  Copy key/value pairs to
              if (originalAction instanceof AbstractAction)
                   AbstractAction action = (AbstractAction)originalAction;
                   Object[] actionKeys = action.getKeys();
                   for (int i = 0; i < actionKeys.length; i++)
                        String actionKey = actionKeys.toString();
                        putValue(actionKey, action.getValue(actionKey));
         private Object getKeyForActionMap(JComponent component, KeyStroke keyStroke)
              for (int i = 0; i < 3; i++)
              InputMap inputMap = component.getInputMap(i);
              if (inputMap != null)
                        Object key = inputMap.get(keyStroke);
                        if (key != null)
                             return key;
              return null;
         public void invokeOriginalAction(ActionEvent e)
              originalAction.actionPerformed(e);
         public void actionPerformed(ActionEvent e)
              System.out.println("custom code here");
              invokeOriginalAction(e);
         public void addPropertyChangeListener(PropertyChangeListener listener)
              originalAction.addPropertyChangeListener(listener);
         protected Object clone()
              originalAction.clone();
         protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)
              originalAction.firePropertyChange(propertyName, oldValue, newValue);
         public Object[] getKeys()
              return originalAction.getKeys();
         public PropertyChangeListener[] getPropertyChangeListeners()
              return originalAction.getPropertyChangeListeners();
         public Object getValue(String key)
              return originalAction.getValue(key);
         public boolean isEnabled()
              return originalAction.isEnabled();
         public void putValue(String key, Object newValue)
              originalAction.putValue(key, newValue);
         public void removePropertyChangeListener(PropertyChangeListener listener)
              originalAction.removePropertyChangeListener(listener);
         public void setEnabled(boolean newValue)
              originalAction.setEnabled(newValue);
         public static void main(String[] args)
              JTextArea textArea = new JTextArea(5, 30);
              JFrame frame = new JFrame("Wrapped Action");
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.add(new JScrollPane(textArea), BorderLayout.NORTH);
              frame.add(new JButton(new WrappedAction(textArea, KeyStroke.getKeyStroke("control V"))));
              frame.pack();
              frame.setLocationRelativeTo( null );
              frame.setVisible( true );

    I can't get the PropertyChangeListener to fire with any source. Here is my test code. Note I am able to add the PropertyChangeListener to the "Paste Action", but I get no output when I add it to the WrappedAction. I must be missing something basic.
    import java.awt.*;
    import java.awt.event.*;
    import java.beans.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.text.*;
    public class WrappedAction3 implements Action, PropertyChangeListener
         private Action originalAction;
         private SwingPropertyChangeSupport changeSupport;
          *  Replace the default Action for the given KeyStroke with a custom Action
         public WrappedAction3(JComponent component, KeyStroke keyStroke)
              Object actionKey = getKeyForActionMap(component, keyStroke);
              if (actionKey == null)
                   String message = "no input mapping for KeyStroke: " + keyStroke;
                   throw new IllegalArgumentException(message);
              originalAction = component.getActionMap().get(actionKey);
              if (originalAction == null)
                   String message = "no Action for action key: " + actionKey;
                   throw new IllegalArgumentException(message);
              //  Replace the existing Action with this class
              component.getActionMap().put(actionKey, this);
              changeSupport = new SwingPropertyChangeSupport(this);
            originalAction.addPropertyChangeListener(this);
            addPropertyChangeListener(this);
          *  Search the 3 InputMaps to find the KeyStroke binding
         private Object getKeyForActionMap(JComponent component, KeyStroke keyStroke)
              for (int i = 0; i < 3; i++)
                  InputMap inputMap = component.getInputMap(i);
                  if (inputMap != null)
                        Object key = inputMap.get(keyStroke);
                        if (key != null)
                             return key;
              return null;
         public void invokeOriginalAction(ActionEvent e)
              originalAction.actionPerformed(e);
         public void actionPerformed(ActionEvent e)
              System.out.println("actionPerformed");
    //  Delegate the Action interface methods to the original Action
         public Object getValue(String key)
              return originalAction.getValue(key);
         public boolean isEnabled()
              return originalAction.isEnabled();
         public void putValue(String key, Object newValue)
              originalAction.putValue(key, newValue);
         public void setEnabled(boolean newValue)
              originalAction.setEnabled(newValue);
         public void xxxaddPropertyChangeListener(PropertyChangeListener listener)
              originalAction.addPropertyChangeListener(listener);
         public void xxxremovePropertyChangeListener(PropertyChangeListener listener)
              originalAction.removePropertyChangeListener(listener);
         public void addPropertyChangeListener(PropertyChangeListener listener)
            changeSupport.addPropertyChangeListener(listener);
        public void removePropertyChangeListener(PropertyChangeListener listener)
            changeSupport.removePropertyChangeListener(listener);
         public void propertyChange(PropertyChangeEvent evt)
             changeSupport.firePropertyChange(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue());
         public static void main(String[] args)
              JTable table = new JTable(15, 5);
              WrappedAction3 action = new WrappedAction3(table, KeyStroke.getKeyStroke("TAB"));
              action.addPropertyChangeListener( new PropertyChangeListener()
                   public void propertyChange(PropertyChangeEvent e)
                        System.out.println(e.getSource().getClass());
              action.putValue(Action.NAME, "name changed");
              Action paste = new DefaultEditorKit.PasteAction();
              paste.addPropertyChangeListener( new PropertyChangeListener()
                   public void propertyChange(PropertyChangeEvent e)
                        System.out.println(e.getSource().getClass());
              paste.putValue(Action.NAME, "name changed");
    }

  • Issues with the SQL wrapper scripts created with the DB adapter

    Hi All,
    We have the wrapper sql scripts created with the DB adapter configurations which are being used to invoke the stored procedures.
    To give you a background on the wrapper sql scripts-The Adapter Configuration wizard generates a wrapper API when a PL/SQL API has arguments of data types, such as PL/SQL Boolean, PL/SQL Table, or PL/SQL Record.
    These two SQL files are saved in the same directory where the WSDL and XSD files are stored, and are available in the Project view.
    The issue we are facing now is that whenever the associated package or the procedure structure undergoes a change we see an error as given below:
    An unhandled exception has been thrown in the ESB system. The exception reported is: "org.collaxa.thirdparty.apache.wsif.WSIFException: esb:///ESB_Projects/Application1_ABC_ESB/DBADP_Update_Out.wsdl [ DBADP_Update_Out_ptt::DBADP_Update_Out(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'DBADP_Update_Out' failed due to: Error while trying to prepare and execute an API. An error occurred while preparing and executing the APPS.XXIRIS_SOA_R_WRAPPER.XXIRIS_AR_CUST_K$ API. Cause: java.sql.SQLException: ORA-04068: existing state of packages has been discarded ORA-04061: existing state of package body "APPS.XXIRIS_AR_CUST_K" has been invalidated ORA-04065: not executed, altered or dropped package body "APPS.XXIRIS_AR_CUST_K" ORA-06508: PL/SQL: could not find program unit being called: "APPS.XXIRIS_AR_CUST_K" ORA-06512: at "APPS.XXIRIS_SOA_R_WRAPPER", line 1 ORA-06512: at line 1 [Caused by: ORA-04068: existing state of packages has been discarded ORA-04061: existing state of package body
    In such cases we need to either execute the wrapper scripts again or refresh the connection pool in case the wrapper sql scripts for that procedure are not available.
    In some cases we see that the first instance errors out.However the second request and the subsequent requests after that goes through successfully.
    Please do let me know if anyone has faced such issues before.
    Any inputs in this regard would be of great help.
    Thanks in advance!
    Deepthi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    I stumbled on a link in the oracle forum which says that the "create or replace package XXX" at the start of the PL/SQL procedure when run seems to intermittently cause the ORA-04068: existing state of packages has been discarded problem.
    As per the solution suggested an “alter package XXX compile" can be executed after the changes are made and then we would no longer get the error in BPEL/ESB and dont have to bounce the server too.
    __http://forums.oracle.com/forums/thread.jspa?threadID=185762_
    However the above solution does not seem to resolve the issue.
    Any help in this regard would be highly appreciated.
    Thanks,
    Deepthi

  • Error while generating wrapper pl/sql with JDeveloper 10.1.3 (production)

    Hello,
    I'm generating a webservice from pl/sql package which returns a collection.
    JDeveloper generates wrapper pl/sql which gives errors when executed in the database because it consists of code like:
    PROCEDURE "NAME"$PROC_NAME_A
    The " creates database errors. When i remove these " the packages compiles.
    But when i insert the service based upon this procedure, I get an "PLS-00103: Encountered the symbol "$" when expecting something else" error.This looks like the same code is inserted again.
    Anyon an idea to get rid of these problems?
    Regards,
    Ruben Spekle

    I'm having the same problem. Did anyone ever help you, or have you resolved this yet?

  • [Solved] Alt-Tab window switching no longer working after update (JWM)

    The next issue I am trying to straighten out after a recent, long-overdue pacman -Syu, is the loss of window-switching functionality using the alt-tab key combination. This is under the JWM window manager, by the way. The alt key seems to work as expected when, for example, firefox has focus: if I hit alt left arrow, the browser goes back to the preceding page. But if I hit alt and tab together, say, in the browser or when a terminal has focus, it seems to be read as though I were pressing only the tab key. So, with two windows maximized on the desktop, the alt-tab combination does not toggle between them. If the terminal has focus I can see the cursor jumping over a tab space each time I press the key combination.
    Can anyone offers pointers on how I might resolve or begin diagnosing this issue? I should mention that another change I did in the wake of the update was to make the system log me in and start the GUI each time I boot the machine (as discussed at https://wiki.archlinux.org/index.php/St … h_profile). I'm not sure why that would have any effect but I thought I should mention it. I think this is just a pretty standard pc105 keyboard by the way.
    Input will be appreciated.
    Thanks,
    James
    Last edited by jamtat (2013-02-01 17:07:32)

    Thank you for your input, anonymous_user. I decided, on reading it, to compare my .jwmrc with the /etc/system.jwmrc file. I noted that, in my .jwmrc, the keybindings section was empty, while that section in the /etc/system.jwmrc had several entries--and even one that seemed to refer to the alt-tab key combination. So I copied that section into my .jwmrc, restarted JWM, and the key combination now seems to be working as it should. Granted, it's a bit strange in that it doesn't open some kind of dialog box with the names of open windows, showing you in list form the windows you're scrolling through. But it does take you to other open windows when, after you've hit the tab key one or more times, you release the alt key. So the issue is resolved and was pretty simple.
    James

  • After the 10.9.4 update, ssh no longer worked until I poked a firewall hole for sshd-keygen-wrapper

    I upgraded two of my Macs, a Mac Mini, A, and a MacBook Air, B, to OS X 10.9.4, using Software Update. After that, I could no longer ssh from A to B, but ssh from B to A worked fine. After some poking around for differences, I then noticed that in Mac B, I had made an exception for /usr/libexec/sshd-keygen-wrapper in System Preferences: Security & Privacy: Firewall: Firewall Options. When I deleted and re-added that, ssh from A to B worked again.
    But on A, I have no such "hole" in the firewall, yet ssh from B to A works fine. What is going on?
    I no longer recall whether I had myself initially added that sshd-keygen-wrapper setting on B... and why exactly I had got the (perhaps incorrect) idea that it is needed. (But if it is, why would one have to add it manually, and wht does ssh from B to A work fine without it?)

    Let me add that Mac A is the machine I am physically logged in on, and I did the check sshing from B to A in a Remote Desktop session, so the situation is not entirely symmetrical.

  • What are the uses of Void wrapper class?

    Hi,
    Similar to other Wrappers, Void is a wrapper class for the primitive ' void ' . We all know that Void is a final class , we can't instantiate it.
    My Question is what are the uses of Void?
    thanks,

    kajbj wrote:
    I have at times used it in reflection and jmx.I have used them with SwingWorker if I didn't have anything interesting to return. There is also an example in the tutorial: [http://java.sun.com/docs/books/tutorial/uiswing/concurrency/simple.html]

  • Creation of wrapper IDOC

    Hi All,
    Could some one please list the steps needed to create a inbound wrapper IDOC.
    I want to use core functionality of IDOC type PORDCH but need to do extra processing before this standard IDOC could be called. I could not find any user exit for PORDCH so the next best thing is to create a wrapper IDOC, do the extra processing and then call PORDCH from within that IDOC but I need help in creation of this custom IDOC.
    Any help would be much appreciated.

    Hi,
    Have you looked these user exits for inbound message type PORDCH?
    EXIT_SAPL2012_001
    EXIT_SAPL2012_002
    EXIT_SAPL2012_003
    EXIT_SAPL2012_004
    Regards,
    Ferry Lianto

  • 64 bit vs 32 bit wrapper for automation server

    I have just istalled WCI 10.3.3 on a windows server 2008 64 bit server and most things seem to be working pretty well. One issue I am having is that automation server is not reporting any of its logging back to the portal. I can watch the jobs run in PTSpy, but no logs in the portal.
    I was looking at the startup log for automationserverwrapper and I see a block of the log that says the following:
    STATUS | wrapper  | 2015/01/26 16:52:32 | Oracle WCI Automation Service installed.
    STATUS | wrapper  | 2015/02/02 11:53:05 | --> Wrapper Started as Service
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.2', '%JVM_2%' is not a valid argument to the jvm.  Skipping.
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.3', '%JVM_3%' is not a valid argument to the jvm.  Skipping.
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.4', '%JVM_4%' is not a valid argument to the jvm.  Skipping.
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.5', '%JVM_5%' is not a valid argument to the jvm.  Skipping.
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.6', '%JVM_6%' is not a valid argument to the jvm.  Skipping.
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.7', '%JVM_7%' is not a valid argument to the jvm.  Skipping.
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.8', '%JVM_8%' is not a valid argument to the jvm.  Skipping.
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.9', '%JVM_9%' is not a valid argument to the jvm.  Skipping.
    WARN   | wrapper  | 2015/02/02 11:53:05 | The value of property 'wrapper.java.additional.10', '%BIT_MODE%' is not a valid argument to the jvm.  Skipping.
    STATUS | wrapper  | 2015/02/02 11:53:05 | Launching a JVM...
    INFO   | jvm 1    | 2015/02/02 11:53:10 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
    INFO   | jvm 1    | 2015/02/02 11:53:10 |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
    INFO   | jvm 1    | 2015/02/02 11:53:10 |
    INFO   | jvm 1    | 2015/02/02 11:53:10 |
    INFO   | jvm 1    | 2015/02/02 11:53:10 | WARNING - Unable to load the Wrapper's native library 'wrapper.dll'.
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           The file is located on the path at the following location but
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           could not be loaded:
    INFO   | jvm 1    | 2015/02/02 11:53:10 |             C:\bea\alui\ptportal\10.3.3\bin\..\..\..\common\wrapper\3.2.3\lib\native\win32\wrapper.dll
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           Please verify that the file is readable by the current user
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           and that the file has not been corrupted in any way.
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           One common cause of this problem is running a 32-bit version
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           of the Wrapper with a 64-bit version of Java, or vica versa.
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           This is a 64-bit JVM.
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           Reported cause:
    INFO   | jvm 1    | 2015/02/02 11:53:10 |             no wrapper in java.library.path
    INFO   | jvm 1    | 2015/02/02 11:53:10 |           System signals will not be handled correctly.
    That seems like it is trying to load the 32 bit into a 64 bit computer, but I know it is supposed to automatically choose the correct loader. Did I miss something on the install? Any help would be greatly appreciated.
    Thanks,
    Berney

    Pretty sure I figured this one out. I think there is a registry edit required. Jobs started showing up 3 hours later. Testing the registry edit now. at https://support.oracle.com/epmos/faces/DocumentDisplay?id=1424443.1
    Thanks Karl.
    Berney

Maybe you are looking for

  • Why do music videos no longer show up properly?

    After updating to OS5 I notice that music videos no longer show up properly.   I have most of mine in playlists, and it show the songs, but only plays the music, not the video?   When I view them in 'Videos' I have no option to sort or show them in a

  • Deleting photo's from iphone

    How can I delete photos on my phone from photo stream and/or camera roll without having to do it one by one from my iphone? I have hundreds of photo's that I have transferred onto my computer and I really need to free up some space on my phone. All t

  • WinXP 64 Bit edition iPod Driver.

    When is apple going to release a 64 bit iPod driver for those of us running WinXP 64 Bit Edition? Until they do, my iPod is a useless lump of coal. A very expensive lump of coal I might add.....

  • Tax error message

    Hi all, We encounter error message for a tax line item, everytime we post a transaction with tax, error message pops when we are about to post it and what we do is just double click on the tax line item and the transaction is already ready for postin

  • Filling the Sales Order Header - Source for filling the dropdown boxes

    Hi, I am trying to design the User Interface for Creation of sales order using the WebDynpro's. I want to know, what are all those BAPI's i need to use to fill the following drop down boxes. 1. Order Type 2. Sales Organization 3. Distribution Channel