Final variable with global scope?

Hi,
We are building a multi threaded server application. We have the need to use some constants (finals) across mutliple classes/threads. Is there a way to create a list of final vars with a global scope? We've considerd a class with static vars, but that would imply using the classname when using the vars. e.g. GlobalClass.VARNAME. We would like to use just VARNAME. Is there a way to do this?

Hi,
Here is the thread that addresses the same issue as yours.
http://forum.java.sun.com/thread.jsp?forum=4&thread=242988
Putting all these in an interface and let the classes that uses them implement it will be useful.
Hope this helped,
Roopasri Vittal
Developer Technical Support
Sun Microsystems
http://sun.com/developers/support

Similar Messages

  • Persisting variables to global scope (M spec's 'shared' keyword?)

    Hi,
    I wanted to declare multiple variables I'd like to reuse in a query, and be able to keep them in scope afterwards for use in other queries. The alternative of redeclaring them in each query separately would seem tedious, while individual queries can also
    only return one variable each (be it a table/list).
    I read in the M formula specification that it should be possible to global-scope a variable using the 'shared' keyword, though apparently this was only for use in the 'sections' part of the M specification unimplemented in Power Query itself. Am I missing
    something? Might there be some other way to persist a variable to the shared (global) scope from within a query?

    Thank you for the further clarification on sections; I didn't really know they are still kind of there in the background.
    Reconsidering, I suppose my perceived issue isn't really so bad. I think what I wanted (using M functions from text files like an external library) is pretty well doable, so I've Github'd (https://github.com/tycho01/pquery) what I have for others to try;
    perhaps that may help illustrate my use case a bit. I think I'm actually satisfied now, though I may as well explain better what I was trying.
    What I'm imagining (as an analogy to my experience with Excel VBA) is basically having a larger library of user defined M functions to flesh out the built-in ones, with smaller functions for relatively basic tasks, and mid-level functions building upon those
    and upon each other.
    Considering the (current) effort in adding a bunch of functions to different workbooks, not to mention edit syncing concerns, keeping such all-purpose functions separate from individual workbooks (in analogy to VBA's 'personal' workbook) would seem sensible.
    If that were to work out, eventually it may be preferable if things were to 'just work', in terms of all functions being in scope, so each such library function could freely call other such library functions.
    At present, if you load multiple functions through Expression.Evaluate(), possible in batch through lists/records as you mentioned, they will all be available in the original scope.
    However, with no effective way to pass this around (unless environments?), the loaded functions will not know of each other though. What I do now is to explicitly load used library functions in each function where they are needed. Under this limitation of losing
    scope between functions, it might be ideal to have all available functions loaded only once.
    Reloading in batch (i.e. load the whole library rather than the parts needed) within every new function scope may become less desirable in terms of unnecessary overhead.
    I suppose for the most part my scenario is still largely hypothetical though, so I might as well try and see if the general idea would take off in the PQ community for now. In either case, thank you for your replies.

  • GetVariableData() usage with global-scope primitives (BPEL 2.0)

    My composite has a global scope variable named "length" that is defined as an integer.  When I attempt to access it at the same scope from an embedded Java using getVariableData() I get a funky error.
    My variable definition is:
        <variable name="length" type="xsd:integer"/>
    And my embedded Java looks like this:
    try {
    int pwdLen = getVariableData("length");
    }catch (Exception e) {
    addAuditTrailEntry("Exception occured in length: " + e);
    Can anyone see why this isn't working?

    getVariableData() doesn't return int. The following works:
    try {
    int pwdLen = Integer.parseInt((String)getVariableData("length"));
    }catch (Exception e) {
    addAuditTrailEntry("Exception occured in length: " + e);

  • Resolving session scoped component in global scope component.

    Hi,
    I am implementing batch process and i am need to resolve session scoped component in global scoped component.
    In global scope component (one of the component referred by my scheduler which also in global scope as usual) and i need to resolve session scoped "/atg/epub/workflow/WorkflowView" component in my scheduler.
    I tried all possibilities but nothing worked out. I do not have access to current request, because its batch process. following ways i tried,
    1. getResolveName("/atg/epub/workflow/WorkflowView") method of GenericService which is extended by my global scope component -- This returns null.
    2. Tried to get the current request on ServletUtils to use resolveName() method on request.
    ServletUtlis.getCurrentRequest() - This returns null as expected.
    Is there any way to resolve session scoped component in global scope component. Thanks in advance.
    Edited by: 938890 on Jun 30, 2012 4:59 AM

    Try below :
    If you want to resolve the name of a Nucleus component from Java code that is not itself a Nucleus service, you must first initialize Nucleus with this construct:
    Nucleus.getGlobalNucleus().resolveName("target component")
    where target component is the name of the component you are looking up. Note that this construct works only for components with global scope.
    You can also resolve names of Nucleus components using the Java Naming and Directory Interface (JNDI). The following example shows how you can use JNDI to access the Scheduler component:
    String jndiName = "dynamo:/atg/dynamo/service/Scheduler";
    Context ctx = new javax.naming.InitialContext ();
    Scheduler s = (Scheduler) ctx.lookup (jndiName);
    reference - oracle ATG docs.
    ~ Praveer

  • Problem with final variables and inner classes (JDK1.1.8)

    When using JDK1.1.8, I came up with following:
    public class Outer
        protected final int i;
        protected Inner inner = null;
        public Outer(int value)
            i = value;
            inner = new Inner();
            inner.foo();
        protected class Inner
            public void foo()
                System.out.println(i);
    }causing this:
    Outer.java:6: Blank final variable 'i' may not have been initialized. It must be assigned a value in an initializer, or in every constructor.
    public Outer(int value)
    ^
    1 error
    With JDK 1.3 this works just fine, as it does with 1.1.8 if
    1) I don't use inner class, or
    2) I assign the value in initializer, or
    3) I leave the keyword final away.
    and none of these is actually an option for me, neither using a newer JDK, if only there is another way to solve this.
    Reasons why I am trying to do this:
    1) I can't use a newer JDK
    2) I want to be able to assign the variables value in constructor
    3) I want to prevent anyone (including myself ;)) from changing the value in other parts of the class (yes, the code above is just to give you the idea, not the whole code)
    4) I must be able to use inner classes
    So, does anyone have a suggestion how to solve this problem of mine? Or can someone say that this is a JDK 1.1.8 feature, and that I just have to live with it? In that case, sticking to solution 3 is probably the best alternative here, at least for me (and hope that no-one will change the variables value). Or is it crappy planning..?

    You cannot use a final field if you do not
    initialize it at the time of declaration. So yes,
    your design is invalid.Sorry if I am being a bit too stubborn or something. :) I am just honestly a bit puzzled, since... If I cannot use a final field in an aforementioned situation, why does following work? (JDK 1.3.1 on Linux)
    public class Outer {
            protected final String str;
            public Outer(String paramStr) {
                    str = paramStr;
                    Inner in = new Inner();
                    in.foo();
            public void foo() {
                    System.out.println("Outer.foo(): " + str);
            public static void main( String args[] ) {
                    String param = new String("This is test.");
                    Outer outer = new Outer(param);
                    outer.foo();
            protected class Inner {
                    public void foo() {
                            System.out.println("Inner.foo(): " + str);
    } producing the following:
    [1:39] % javac Outer.java
    [1:39] % java Outer
    Inner.foo(): This is test.
    Outer.foo(): This is test.
    Is this then an "undocumented feature", working even though it shouldn't work?
    However, I assume you could
    get by with eliminating the final field and simply
    passing the value directly to the Inner class's
    constructor. if not, you'll have to rethink larger
    aspects of your design.I guess this is the way it must be done.
    Jussi

  • Build stand-alon​e applicatio​n with Global variable

    Question:
       how to build a VI access a global variable into a standalone EXE file?
    there are multiple VIs access to one Global variable, one of the VIs need to run in background to update the Global variable, whick i built into EXE file.
    the rest VI will be called in from Teststand to retrieve the Global variable.
    the global variable is updated if i run the background VI in labview, but after i build it into EXE file, it seems the global is not updated even the EXE running OK.

    Hi,
    Do you actually need to have an executable.
    If you can call your global variable updater VI as a VI form, then your other VI's will still beable to see the Global variable.
    You can launch you global variable updater VI in a new thread or execution so that it runs in the background and returns back to TestStand sequence so you can continue on with the rest of your tests.
    Remember to close your global updater VI before you complete your test sequence run.
    Regards
    Ray Farmer

  • Formula node with global variable

    Hi,
    I am tring to use formula node with global variables as an input and output,
    but this is where I see the SW hangs forever.
    By the way I am a novice to the labview.
    Can some give me hint why this is happening?
    Thank you in advance,
    Do
    Solved!
    Go to Solution.
    Attachments:
    formula_node_wGlobalInputOutput.JPG ‏281 KB

    Well, the first case of the two loops has a direct LabVIEW translation like this:
    However, just because that's the direct translation doesn't mean that's what you should be doing. In the formula node it seems as if you were copying elements from one array to another. Element-wise operation on arrays via loops can be quite inefficient in LabVIEW. Often one can operate in place with arrays, and an operation that would require two loops in a language like C would actually require no loops in LabVIEW. In fact, with the above example, even if you were to use loops, arrays can auto-index for-loops so you don't even need to wire the constants to the N terminals to tell the loop(s) how many times to run.
    Can you describe what you're trying to accomplish? There's likely to be a more natural way to do it in LabVIEW that would require no loops. Have you gone through the tutorials? You can also look over the material in the NI Developer Zone's Learning Center which provides links to other materials and other tutorials. You can also take the online courses for free.

  • Change a global variable with a function

    HI ALL!
    I have the following problem...
    I would like to change a global variable with a void function so not like this: variable = function(); .
    What do you suggest?
    Best regards,
    Korcs

    I have the following problem...
    I would like to change a global variable with a void
    function so not like this: variable = function(); .
    What do you suggest?>
    >
    I dont quite understand your question but if your variable is a reference to an object then you can certainly have a method to alter the object that the reference is pointing to and/or the reference itself..
    otherwise your 'function' will have to return the same type as the variable itself in order to do the assignment as you demonstrated, regardless of wether it's C, C# or Java, AFAIK, WIRNM
    HTH

  • How to auto create a global variable with specific variable name in a global vi ?

    how to auto create a global variable with specific variable name in a global vi using lv ? Because i need to add a lot of global variable in this global vi. But you know, if  i manually add them , it will be a much time-costing work. So i want to use someway to auto generate ? Can i ?? Thanks a lot !

    Hi
    what aartjan is saying is the way for you. but you can develop an utility which will actually help you create global variables. To get the details on this just have a look at VI Scripting section on LAVA forum.
    But i would like you to suggest few things
    1. If your programs have so many global variables (Thats why u want utility) then you should take out some time to read about LabVIEW design patterns. I think if programmer follows these practicess he dont need a single global variable.
    2. Their are some other ways to achieve similar functionality as of global variables (Uninitialized Shift Registers, Single Element Qs and so on) but they are much faster than global variables.
    I am Attaching Whatever Resources i am having I will also attach the template of the design pattern i generaly use in short duration
    Message Edited by Tushar Jambhekar on 10-06-2005 07:33 PM
    Message Edited by Tushar Jambhekar on 10-06-2005 07:36 PM
    Tushar Jambhekar
    [email protected]
    Jambhekar Automation Solutions
    LabVIEW Consultancy, LabVIEW Training
    Rent a LabVIEW Developer, My Blog
    Attachments:
    LabVIEWDesignPatterns.zip ‏1505 KB
    Large_Code_Implementation.zip ‏522 KB
    Database Tests.zip ‏868 KB

  • Adding tab to typedef tabcontrol causes class conflict with global variable

    Hi,
    I am quite new to labview. I have to update an existing program and I have a problem whith a tabcontrol. In attachement, I give you a very simple solution showing my problem.
    I have defined a simple tabControl in a typedef ctl. I had it to a VI and in block diagram of this VI, I want to fill a global variable with this control and this global variable is set as "Include Data Type".
    When creating my ctl file with a simple tabcontrol, there is no problem but my tabcontrol only contains 2 tabs. When I use "Add page after" in my ctl file to create a third one, after saving, I get a class conflict error on wire to global variable in my block diagram.
    If I remove added page, all is OK again. I don't understand why adding a new page causes a class conflict. In my attachement, it is very simple but in program that I have to modify, I already have 15 tabs and I just want to add a 16th one so, I am sure there is a mean, but impossible to fond it after many hours...
    If someone can tell me how to make my example works with "Include Data Type" (if I remove it, it always works but that is not what I want) and adding an additional tab, it would hemp me a lot!
    Thanks in advance.
    Yohann
    Attachments:
    test2.zip ‏11 KB

    The problem is that the tab is an enum, and you can't wire two strictly typed references of two different enums together, because they are considered different data types. What you can do is right click the reference control in the global variable and select Show Control, which will show the data type of the reference. You can then replace the control inside the reference with the typedef, which will cause it to update correctly.
    Although that will solve the problem, if you have the reference to a tab control in a global variable, you probably have some issues with your code, but that's not something which can be commented on without more details.
    Try to take over the world!

  • Using built-in with global variables

    I am trying to setup built-in source code control for LabVIEW. It seems to be OK except in one case:
    Is it possible to use built-in with global variables ?
    VIs that use a global variable are supposed to be updated automatically when global variable is modified but what happen when VIs are checked-in ? LabVIEW cannot updated them. Is it necessary to check out all VIs before modifying global variable ? This is not convenient if global variable is used in more than 100 VIs !
    Is there another solution ? Can Perforce resolve this problem ?
    Thanks for your help !
    David

    You can still use and update global variables while they are checked in to SSC. The default values will still be saved in SSC but they can still be modified and read by other vi's.
    goldie

  • Creating single executible with global variables

    I am trying to create an executible with global variables. I dynamically load the source file but when I run the indicator does not update unless I run both VI's together. Is the executible require different inputs during creation?

    Hello,
    It's not the fact that you are creating an executable that is causing the issue. What you are experiencing is expected behavior. Please see this KnowledgeBase" for some solutions.
    Nicholas C
    National Instruments
    Applications Engineering

  • Problem with final variables and inner classes

    variables accessed by inner classes need to be final. Else it gives compilation error. Such clases work finw from prompt. But when I try to run such classes through webstart it gives me error/exception for those final variables being accessed from inner class.
    Is there any solution to this?
    Exception is:
    java.lang.ClassFormatError: com/icorbroker/fx/client/screens/batchorder/BatchOrderFrame$2 (Illegal Variable name " val$l_table")
         at java.lang.ClassLoader.defineClass0(Native Method)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
         at com.sun.jnlp.JNLPClassLoader.defineClass(Unknown Source)
         at com.sun.jnlp.JNLPClassLoader.access$1(Unknown Source)
         at com.sun.jnlp.JNLPClassLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
         at com.icorbroker.fx.client.screens.batchorder.BatchOrderFrame.<init>(BatchOrderFrame.java:217)
         at com.icorbroker.fx.client.screens.batchorder.BatchOrderViewController.createView(BatchOrderViewController.java:150)
         at com.icorbroker.fx.client.screens.RealTimeViewController.initialize(RealTimeViewController.java:23)
         at com.icorbroker.fx.client.screens.batchorder.BatchOrderViewController.<init>(BatchOrderViewController.java:62)
         at com.icorbroker.fx.client.screens.displayelements.DisplayPanel$3.mousePressed(DisplayPanel.java:267)
         at java.awt.Component.processMouseEvent(Component.java:5131)
         at java.awt.Component.processEvent(Component.java:4931)
         at java.awt.Container.processEvent(Container.java:1566)
         at java.awt.Component.dispatchEventImpl(Component.java:3639)
         at java.awt.Container.dispatchEventImpl(Container.java:1623)
         at java.awt.Component.dispatchEvent(Component.java:3480)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3162)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)
         at java.awt.Container.dispatchEventImpl(Container.java:1609)
         at java.awt.Window.dispatchEventImpl(Window.java:1590)
         at java.awt.Component.dispatchEvent(Component.java:3480)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)

    I've also been having the same problem. The only work-around seems to be to slightly change the code, recompile & hope it works. See http://forum.java.sun.com/thread.jsp?forum=38&thread=372291

  • Interfaces and final variables

    So I understand that I am not supposed to put my final variables or constants into an interface, but then where?
    I have 2 classes that implement an interface, and they both allow listerners to be added to them, through that interface. They both fire property events on the listener with the same property. Currently I just put the property id constants into one class and reference it from the other. But it appears to me the best place for the definition of these common properties is in the interface!?

    So If you read over all the postings, you'll know exactly why they say, never to create classes for the purpose of grouping constants, it is confusing.
    More explicitly, it is lazy. The reason you are grouping the constants has nothing to do with the relationship between the constants and their use within the program, you are grouping them because you are tired of typing a long declaration everytime you want to use them within the program. So, the overall design of your program is being warped by design decisions that are based on laziness.
    The reason people put them in interfaces, "public interface Globals...", is so that importing that namespace through inheritance doesn't suck up that "valuable" superclass (which I will have to remember to rant about on some other thread). It is probably the case that the most efficient way to do this is to use static getters: getPI(), getOrigin(), getNewYears(), whatever. You will see an awful lot of constants that have been replaced over the years with getters. As the code matures, it isn't peculiar to see the flexibility of the programme being reduced or impeded by the constraints and constants implicit in the codesbase.
    Andrew

  • Formula variable with replacement path to another input variable

    Hi @ all,
    i have a question regarding "Formula variable with replacement path to another input variable".
    My Problem is that in selection screen and for info-fields the input variable is shown with its key and not with its description.
    Scenario:
    A formula variable (X) is used to get an input value of a characteristic variable (Y) for 0Fiscper3 to realize a IF-Then scenario.
    The formula variable (X) uses replacement path by variable (Y) replace by "key".
    In selection screen of the query variable (Y) is named with its key "ZAB_BUPE01" and not with its description " fiscal period". Same as for info-fields where the description is "ZAB_BUPE01" and not " fiscal period".
    Does anybody have a solution to display the selection variable correctly?
    Regards
    Tobias

    Issue Solved!
    The input varaible (y) for 0Fiscper3 was saved globally on the InfoProvider. This results in that the formula variable with replacement path only shows its technical name. I put the input variable in the query itself and it soved the problem. The variable is displayed with its description in selection screen.
    Regards

Maybe you are looking for

  • While opening a query

    I am getting this error. The component was edited with more recent version of editor. You also have to use the more recent version to edit further. Further processing not possible. Update your front end. How do i solve this? Also when i execute the s

  • How to save recovered files?

    I was working with Microsoft Excel on my MacBookPro and my computer crashed. When I started it back up again, it told me it had recovered my Excel file. I continued to use this new excel file which now had a new name - I think it was the same name +

  • I-tunes gift. certif. cash

    i was sighning into my itunes account to buy a song, put in my password and it said i was declined from my charge card account, which is fine because i have been having problems with my charge account. but i know i have like 44 dollars and change on

  • Lightroom 3 ~ Move photos from one catalog to another, existing catalog? Not "export as new catalog"

    After consulting the interwebs and the Adobe site and a book about Lightroom 3, I remain confused about how to quickly and easily get photos from one existing catalog to a different catalog, since LR doesn't allow one (for its own arcane reasons, I a

  • IPad connection troubles.

    My iPad mini which I have had for a while seems to be having some issues. It won't connect to the app store or iTunes, and when I try to get on the internet(I have tried both Chrome and Safari) I am told that I can't because my connection is insecure