Dynamically finding correct instance of class

I am running two different applications under same context in tomcat. Both application has their own set of classes and common classes which are accessed by both applications. One of the common class say Class A is implemeting common interface say B is extended by both applications having their own subclasses C and D respectively. Now when some other common class Say X invokes method on interface B , at runtime class X should be able to invoke method on correct instance C or D depending on which application request came from. Is there any way where Class X can dynamically find the correct instance of class C or D to invloke method on?

My answer is in your other thread.

Similar Messages

  • Finding type instances inside .class files

    Hi
    I have been trying to figure out if this is possible to do.
    I want to be able to be given a JAR file, and then search it for instances where the Java Security Manager is called and with what the permission required is, and from that establish what method it is associated with.
    I can get the bytecode and from that the constant pool and can see when the security manager is called, but I cannot seem to find a link of what permission is called.

    The quick hacky way would be to check each class constant in the constant pool to see whether it extends SecurityPermission.
    The more robust way would be to model flow through the method to determine the origin of each argument passed to a SecurityManager.checkPermission call. If you can use open source code for the project you're working on, check out the FindBugs project, which has some code to model flow.

  • Instancing a class whose classname is a variable

    I'm currently working on building a rudimentary 2D game engine and development kit program for building objects and I've run into an interesting problem. Here's what I want to do
    1. User creates new object which extends one of my other types of objects with user-defined name
    2. User defines constructor parameters and can alter the code of the object
    3. User hits save button, program writes new file with <user-defined name>.java as it's name
    4. Program compiles the objects
    (This is where I am right now)
    5. Program instances new object whose class is the newly created user defined class
    6. Program saves newly instanced object (easy since they'll be serializable eventually)
    7. Separate program opens the instanced object and uses it
    Now then this poses 2 questions. 1, is there a better way to do this sort of thing? By this sort of thing I mean created a new java class, saving it, instancing it, and using it in a separate program. 2, the main question is, is this even possible? Is it possible to instance a class whose name is determined at runtime? Something tells me it's not possible, simply because that would make it really easy to write dynamic code that changes at runtime and since that's often talked about as a difficult thing I doubt there's any other why to do it. I have another possibility, but it would make loading these objects insanely difficult and since I want them to be editable that means I'd much rather use a different method. Also the other method has some other problems that are hard to explain without getting into what the program does.
    I also would like to throw another question in.
    What's the best (easiest to write) way to detect (at runtime) if one of your programs is performing an infinite recursion? I've been working on a very stupid recursion based pathfinding AI for the same program, it was originally loop based but I realized recursion would cut the code down by a lot and make it smarter. However recursion also introduced an infinite loop problem because the AI works by picking two paths when it hits an object, right and left, then examining those recursively. So when I hit an object, go right, and hit another object the AI tests going back the way it came and gets stuck. Any suggestions would be most appreciated, my current method is to pass each recursive call a list of the points already visited and check if the destination for that call is the same as any of those points then simply cancel going that way however that's not working too well.
    Thanks for any help.

    Jverd - I know right now what constructor I'm calling and what arguments it takes...right now. That's subject to change and I would rather not dig through my code to find where I hard-coded it if another option is available.
    Here's what I have right now, it's giving me an error that newInstance() cannot be applied to newInstance(Object[]). If I try to do newInstance(params[0], params[1]) etc based on the length of params it gives me the same error except it changes newInstance(Object[]) to newInstance(Object, Object) etc
    Object[] params = new Object[textFields.size()];
    for (int i=0; i<textFields.size(); i++)
         if (parameters.get(i) == "int")
              params[i] = Integer.parseInt(textFields.get(i).getText());
         else if (parameters.get(i) == "String")
                 params[i] = textFields.get(i).getText();
         else
              params[i] = null;
    obj = obj.newInstance(params);I know I'm making a stupid mistake but I've never worked with that varargs thing before and so I don't know what stupid mistake I'm making. And in case it helps the constructor I'm trying to call at the moment is for my Item class which looks like this
    public RoNItem(boolean isGrenade, boolean isMedpac, boolean isObjective, int weight, int numberOfItems, String pictureLocation, String name, String description, String soundClipLocation)
    it takes 2 booleans (which I just noticed, so I guess my constructors take ints, Strings and booleans), 2 ints, and 4 strings right now. One of those strings was added yesterday, which is why I'd like to write some code that can adapt. The parameters the user is typing in are already loading from the file so the user will always enter the proper number and type of parameters, I just need to worry about how to pass those.

  • Oracle Access Manager Configuration : Cannot find the Person Object Class

    Hi,
    I am trying to install OAM , I am getting the following error when i am configuring the Identity server for the first time.
    1) I have installed OID. I am using one OID for both config and user data.
    2) I have installed Identity server and have modified the OID schema automically during installation.
    3) I have installed web pass.
    I have gone to the url: http://trn-ps-oid.oracle.com:7777/identity/oblix
    Here i gone to Identity System Console to configure Identity server.
    Following are the config data i have given
    Configuration DN : dc=mydomain,dc=com
    Search Base : dc=mydomain,dc=com
    Host : mypc.mydomain.com
    Port Number : 389
    Root DN : cn=orcladmin
    Root Password : *******
    Directory Server Security Mode : Open
    Is the Configuration data stored in this directory also : Yes
    Person Object Class : inetorgperson
    Auto configure objectclass : yes
    Group Object Class : groupOfUniqueNames
    Auto configure objectclass : yes
    After this I have clicked on the restart server button.
    It comes back to the page asking to enter Person Object class details.
    I Get the Error : Cannot find the Person Object Class.
    I have checked the object class in OID it is there, I have verified the connection details are also correct.
    Any Ideas what might be wrong.
    Earlier during setup i had to modify the OID schema, how do i check if this has been done.
    Any Ideas

    <?xml version="1.0" encoding="utf-8"?>
    <ValNameList
    xmlns="http://www.oblix.com"
    ListName="setup.xml">
    <NameValPair
    ParamName="mainOIS"
    Value="true"></NameValPair>
    <NameValPair
    ParamName="currentStep"
    Value="LDAP_CONFIG_CHANGES"></NameValPair>
    <NameValPair
    ParamName="status"
    Value="incomplete"></NameValPair>
    <NameValPair
    ParamName="whichDB"
    Value="OID"></NameValPair>
    <NameValPair
    ParamName="dataDirCopied"
    Value="TRUE"></NameValPair>
    <NameValPair
    ParamName="machineNo"
    Value="localhost"></NameValPair>
    <NameValPair
    ParamName="portNo"
    Value="389"></NameValPair>
    <NameValPair
    ParamName="rootDN"
    Value="cn=orcladmin,cn=Users,dc=mydomain,dc=com"></NameValPair>
    <NameValPair
    ParamName="ldapRootPasswd"
    Value="**************"></NameValPair>
    <NameValPair
    ParamName="securityMode"
    Value="Open"></NameValPair>
    <NameValPair
    ParamName="oblixUserDataSame"
    Value="Yes"></NameValPair>
    <NameValPair
    ParamName="searchBase"
    Value="dc=mydomain,dc=com"></NameValPair>
    <NameValPair
    ParamName="configDN"
    Value="dc=mydomain,dc=com"></NameValPair>
    <NameValPair
    ParamName="obClassPerson"
    Value="inetorgperson"></NameValPair>
    <NameValPair
    ParamName="defaultConfigForPersonOC"
    Value="true"></NameValPair>
    <NameValPair
    ParamName="obClassGroup"
    Value="groupOfUniqueNames"></NameValPair>
    <NameValPair
    ParamName="defaultConfigForGroupOC"
    Value="true"></NameValPair>
    <NameValPair
    ParamName="obOldClassPerson"
    Value="inetorgperson"></NameValPair>
    <NameValPair
    ParamName="obOldClassGroup"
    Value="groupOfUniqueNames"></NameValPair>
    </ValNameList>

  • Dynamically adding multiple instances of a movie clip to the stage with one button

    hello,
    I was wondering if there was a way to add several instances
    of the same movie clip to the stage dynamically utilizing one
    button.
    I can do one with the following code placed on the button...
    on (release) {
    attachMovie ("filledCircle", "filled1", 5);
    filled1._x = 370;
    filled1._y = 225;
    But I want the user to be able to hit the button again and
    get yet another instance of "filledCircle" on the stage.
    I also want the user to be able to drag these instances
    around...
    Any help would be appreciated...
    Thanks,
    Muhl

    Muhl,
    > I was wondering if there was a way to add several
    > instances of the same movie clip to the stage
    > dynamically utilizing one button.
    Sure thing.
    > I can do one with the following code placed on the
    > button...
    >
    > on (release) {
    > attachMovie ("filledCircle", "filled1", 5);
    > filled1._x = 370;
    > filled1._y = 225;
    > }
    Gotcha.
    > But I want the user to be able to hit the button again
    > and get yet another instance of "filledCircle" on the
    > stage.
    You're in luck, because this isn't very hard to do. The main
    thing to
    keep in mind is that each instance must have A) its own
    unique instance name
    and B) its own unique depth. In your example, the instance
    name is filled1
    and the depth is 5. The next clip's instance name should be
    filled2 at a
    depth of 6. Then filled3, depth 7, and so on. You can use a
    single
    variable to handle the incrementation.
    // code in a frame
    var counter:Number = 1;
    // code on your button
    on (release) {
    attachMovie ("filledCircle", "filled" + counter, counter +
    4);
    With me so far? The variable counter contains the numeric
    value 1. The
    second parameter of attachMovie() is provided with a
    concatenation of
    "filled" + 1, which makes "filled1". The third parameter is
    provided with
    the sum of counter plus 4, which makes 5. Obviously, we need
    a bit more.
    The button must, in addition, increment the value of counter.
    The ++
    operator handles this perfectly.
    on (release) {
    attachMovie ("filledCircle", "filled" + counter, counter +
    4);
    counter++;
    Now, it seems you also want to position the attached movie
    clip to (370,
    225). Are they call supposed to go to the same place? If so,
    you may use a
    second variable to hold a reference to the newly attached
    clip. Look up
    MovieClip.attachMovie(), and you'll see that the method
    returns the exact
    reference you need.
    // code in a frame
    var counter:Number = 1;
    var mc:MovieClip;
    // code on your button
    on (release) {
    mc = attachMovie ("filledCircle", "filled" + counter,
    counter + 4);
    counter++;
    mc._x = 370;
    mc._y = 225;
    Make sense?
    > I also want the user to be able to drag these instances
    > around...
    Then you need to handle a few events. You're dealing with
    movie clips
    here, so your best bet is to study up on the MovieClip class,
    which defines
    all movie clips. (Note, also, that the TextField class
    defines all input
    and dynamic text fields; the Sound class defines all sounds,
    etc. This is a
    very handy arrangement of the ActionScript 2.0 Language
    Reference.)
    // code in a frame
    var counter:Number = 1;
    var mc:MovieClip;
    // code on your button
    on (release) {
    mc = attachMovie ("filledCircle", "filled" + counter,
    counter + 4);
    counter++;
    mc._x = 370;
    mc._y = 225;
    mc.onPress = function() {
    this.startDrag();
    mc.onRelease = function() {
    this.stopDrag();
    Easy as that. You're simply assigning a function literal to
    the event
    of each new MovieClip instance as you create it. Take a look
    and you'll see
    each of these class members available to you -- that is, to
    all movie clips.
    MovieClip.onPress, MovieClip.startDrag(), MovieClip._x, etc.
    Wherever it shows the term MovieClip in the Language
    Reference, just
    replace that with the instance name of your clip -- or a
    reference to that
    clip (which even includes the global "this" property).
    David
    stiller (at) quip (dot) net
    Dev essays:
    http://www.quip.net/blog/
    "Luck is the residue of good design."

  • Glassfish can't find JAX-WS handler classes

    Hi,
    Created a JAX-WS Stateless EJB3 Endpoint, configured JAX-WS handlers using a handler chain XML, deployed on Glassfish 3.1.2. Glassfish won't find any of the 3 handler classes. I've verified and reverified that the handler XML uses the correct package and class name. The first two of three handlers are part of the project while the third one is in a jar in the lib, so obviously they are all on the class path.
    Any help is greatly appreciated. Google searches showed that people had similar issue before but no one seemed to have found a solution (or if they did they did not post it back).
    Also posted [http://www.java.net/forum/topic/glassfish/metro-and-jaxb/glassfish-cant-find-jax-ws-handler-classes]
    [#|2012-04-03T21:59:11.769-0400|SEVERE|glassfish3.1.2|javax.enterprise.webservices.org.glassfish.webservices|_ThreadID=16;_ThreadName=Thread-3;|Unable to load handler class edu.certification.abhijitsarkar.ocewsd.jaxws.ejb.webservice.handler.ProgrammaticAuthenticationHandler
    java.lang.ClassNotFoundException: edu.certification.abhijitsarkar.ocewsd.jaxws.ejb.webservice.handler.ProgrammaticAuthenticationHandler
         at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1509)
         at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Class.java:247)
         at org.glassfish.webservices.WsUtil.processConfiguredHandlers(WsUtil.java:2141)
         at org.glassfish.webservices.WsUtil.configureJAXWSServiceHandlers(WsUtil.java:2193)
         at org.glassfish.webservices.EjbRuntimeEndpointInfo.prepareInvocation(EjbRuntimeEndpointInfo.java:266)
         at org.glassfish.webservices.EjbRuntimeEndpointInfo.initRuntimeInfo(EjbRuntimeEndpointInfo.java:343)
         at org.glassfish.webservices.WebServiceEjbEndpointRegistry.registerEndpoint(WebServiceEjbEndpointRegistry.java:129)
         at com.sun.ejb.containers.BaseContainer.initializeHome(BaseContainer.java:1181)
         at com.sun.ejb.containers.StatelessSessionContainer.initializeHome(StatelessSessionContainer.java:202)
         at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:167)
         at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:230)
         at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:299)
         at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:105)
         at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
         at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:264)
         at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
         at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
         at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
         at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
         at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
         at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
         at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
         at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
         at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
         at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
         at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
         at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
         at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
         at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
         at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
         at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
         at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
         at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
         at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
         at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
         at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
         at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
         at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
         at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
         at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
         at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
         at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
         at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
         at java.lang.Thread.run(Thread.java:680)
    Endpoint:
    @Stateless
    @WebService(name="Time", serviceName="TimeService", portName="TimeServicePort")
    @HandlerChain(file = "/handler-chain.xml")
    @DeclareRoles({ "guest", "user" })
    public class TimeService {
    // code, probably irrelevant to the issue
    handler-chain.xml:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <javaee:handler-chains xmlns:javaee="http://java.sun.com/xml/ns/javaee"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <javaee:handler-chain>
              <javaee:handler>
                   <javaee:handler-class>edu.certification.abhijitsarkar.ocewsd.jaxws.ejb.webservice.handler.HttpBasicAuthenticationHandler
                   </javaee:handler-class>
              </javaee:handler>
              <javaee:handler>
                   <javaee:handler-class>edu.certification.abhijitsarkar.ocewsd.jaxws.ejb.webservice.handler.ProgrammaticAuthenticationHandler
                   </javaee:handler-class>
              </javaee:handler>
              <javaee:handler>
                   <javaee:handler-class>edu.certification.abhijitsarkar.ocewsd.jaxws.utility.handler.SOAPRequestHandler
                   </javaee:handler-class>
              </javaee:handler>
         </javaee:handler-chain>
    </javaee:handler-chains>

    Ok, I found the answer... it is actually a classic bug. The code that is loading the handler is located in WsUtil. Here is a link to version 3.1.1 of that code, although I am running 3.1.2.
    http://grepcode.com/file/repo1.maven.org/maven2/org.glassfish.webservices/jsr109-impl/3.1.1/org/glassfish/webservices/WsUtil.java/
    The method and line that blows up is org.glassfish.webservices.WsUtil.processConfiguredHandlers(WsUtil.java:2141). On that line (in version 3.1.2 - remember the link above is 3.1.1), there is a call to "Class.forName". It turns out that it is passing the exact UNTRIMMED name that is found in the generated JAX-WS handler-chain XML file (it was generated from wsimport in my case).
    In my JAXWS customization file, I had placed the handler name "prettily" on its own line, with a carriage return like so:
    (leading whitespace here - but these forums don't show whitespace)<javaee:handler-class>myHandler
    (leading whitespace here - but these forums don't show whitespace)</javaee:handler-class>
    That extra whitespace is NOT BEING TRIMMED in the code responsible for parsing the file. That is the problem, plain and simple. I fixed that:
    <javaee:handler-class>myHandler</javaee:handler-class>
    ... and the problem went away.
    To confirm this, I looked in the logs of the Glassfish server at all the times it complained it could not load class "myHandler", and found it was actually complaining about "myHandler " (i.e. with many spaces).
    Hope this helps someone.
    Edited by: Bland on Jun 14, 2012 2:41 PM
    Edited by: Bland on Jun 14, 2012 2:43 PM
    Edited by: Bland on Jun 14, 2012 2:44 PM

  • Dynamically Selecting & Creating Instance of Implementation at Runtime

    I'm looking to create a instance of an implementation of a interface where the class name of the interface is both given at runtime via properties and also unknown at compile-time (the binary may be provided by another developer in a separate package). I am wondering if this is both possible, and if it is, how I can accomplish this.
    For example:
    package com.someone.else;
    public class ExternalImplementation extends Object; // This is a silly example.
    package com.me;  // In my code, in the body of some method, I would have:
    String className = "ExternalImplementation"; // This would be gotten through a Properties object and may be just the class name or whatever it takes to specify the correct class.
    Object o = /* And here, I want to create an instance of an ExternalImplementation, even though it doesn't exist at compile-time. */;Thanks for your time!
    ~ Anthop

    Ah yes, sorry - Spoon's is correct. I was mentally absent for half of my answer :) Note that it would also be enough to do:
    SomeInterface instance = (SomeInterface)Class.forInstance("ExternalImplementation").newInstance();Less typing and will give you the same error if the external imlementation doesn't in fact implement SomeInterface.

  • Getting the error " [java] Problem invoking WLST - java.lang.RuntimeException: Could not find the OffLine WLST class " while building the O2A 2.1.0 PIP

    Getting the error " [java] Problem invoking WLST - java.lang.RuntimeException: Could not find the OffLine WLST class " while building the O2A 2.1.0 PIP. I am using the Design Studio 4.3.2 for building the O2A 2.1.0 PIP. Please let me know how to resolve this issue. Here I am enclosing the log file .

    We have basically the same issue when we try to create the interpreter using the embedded method..
    I was able to use the interpreter embedded in a java client as long as the weblogic jars were located in a weblogic install if I tried to use them from a maven repository no luck at all...
    All of this worked easily in 9.2 now in 10.3 it seems more error prone and less documented.
    I have seen close to a 100 posts on issues related to this so is there a document which outlines specifics....
    We / I have used weblogic now for almost 10 years and moving from 8.1 to 9.2 was painful and we expected the move from 9.2 to 10.3 not to be soo bad but its proving to be as painful if not more painful than moving to 9.2. We seem to spend a good bit of our time working around issues in the next new release that were not in the previous one..
    Any help would be appreciated I think we will open a support case but even that is more painful...
    Any help would be greatly appreciated..
    PS: We confirmed that all jars in the startweblogic classpath were in the startup. The server we have the embedded wlst instance is a managed server and we are using the component in a war... Are there any restrictions which we are unaware of.
    Error we get is
    1 [ERROR] com.tfn.autex.order.weblogic.QueueMaintenanceUtility.addQueue():217 Error Adding Queue wowsers JNDI Name wowsers Exception: Invocation Target exception while getting the WLSTOffLineScript path

  • Is it possible to find an instance of an object without it being passed to

    Hi all,
    I have a parser class "MessageParser" which i pass a message which is of type "String" to it for it to be parsed. The parsing method signature for the class is
    public void parse(String message);
    I need to pass an instance of "Properties" to it but i dont want to change the signature of the method to add a new argument to it. I have been struggling with this for the last couple of days and have tried a couple of options - see http://stackoverflow.com/questions/5134462/sending-in-an-object-of-type-object-instead-of-string-polymorphism
    The class that calls the parsing method "ParserManager" knows of the properties object. Is there a way for the MessageParser to find the properties object without it being passed to it?
    Thanks
    ps - also posted in http://stackoverflow.com/questions/5140795/is-it-possible-to-find-an-instance-of-an-object-without-it-being-passed-to-the-me

    ziggy wrote:
    I need to pass an instance of "Properties" to it but i dont want to change the signature of the method to add a new argument to it. I have been struggling with this for the last couple of days and have tried a couple of options - see http://stackoverflow.com/questions/5134462/sending-in-an-object-of-type-object-instead-of-string-polymorphism
    The class that calls the parsing method "ParserManager" knows of the properties object. Is there a way for the MessageParser to find the properties object without it being passed to it?I completely agree with Kayaman if you can get away with only the passing the Properties once (as he suggests, at construction time).
    If you can't (ie, you must pass the Properties with each message), then I suspect you have a new type of Parser, and your design will have to reflect that.
    One possibility would be to extend Parser with a PropertiesParser interface that defines a new parse() method and either update the current ParserManager to "understand" the difference, or create a new one.
    The problem with the first option is that the manager then becomes a dispatcher, which kind of goes against the grain of OO programming (what if you need to add a third type of parser, or a fourth?).
    Another possibility (probably better) would be to create a variant of your MessageObject class that includes Properties, and a variant of your MessageCParser that knows how to deal with such an object.
    There are many ways to go, and only you probably know which is best.
    That said, if you can get away with passing the Properties once, definitely follow Kayaman's advice.
    Winston

  • How to find bpel instance in 11g based on the index values using Java APIs

    Hi ,
    In SOA10G we had option to find the instances based on the index value using Java APIs like below.
    WhereCondition criteria= new WhereCondition(SQLDefs.CX_index_1 + " = ?");
    criteria.setString(1, "indexValue");
    Locator mLoc = getLocator();
    IInstanceHandle[] foundInstances = mLoc.listInstancesByIndex(criteria);
    Please tell me how to achieve the same functionality in SOA 11G using Java APIs
    Regards,
    Saba

    I have multiple bpel in my composite. I checked in ci_indexes table and it shows the instance number of the bpel process. But the em console is showing only the composite instance number. when I opened composite instance, I could see all the bpel process with instance number in the audit trail. How can I find the the actual composite instance number that I should search for in the em console ???

  • Java.lang.RuntimeException: Could not find the OffLine WLST class

    Installation of OIM On weblogic.
    oracle/oim/xellerate/setup/setup.xml:443: The following error occurred while executing this line:
    /oracle/oim/xellerate/setup/weblogic-setup.xml:196: java.lang.RuntimeException: Could not find the OffLine WLST class
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:539)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:384)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.Target.performTasks(Target.java:369)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
    at org.apache.tools.ant.Main.runBuild(Main.java:668)
    at org.apache.tools.ant.Main.startAnt(Main.java:187)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
    Tried to run this command ./wlst.sh
    shows
    CLASSPATH=/home/oracle/bea/patch_wls1030/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/home/oracle/bea/patch_cie660/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/oracle/jdk/lib/tools.jar:/oracle/weblogic/server/server/lib/weblogic_sp.jar:/oracle/weblogic/server/server/lib/weblogic.jar:/home/oracle/bea/modules/features/weblogic.server.modules_10.3.0.0.jar:/oracle/weblogic/server/server/lib/webservices.jar:/home/oracle/bea/modules/org.apache.ant_1.6.5/lib/ant-all.jar:/home/oracle/bea/modules/net.sf.antcontrib_1.0.0.0_1-0b2/lib/ant-contrib.jar:
    PATH=/oracle/weblogic/server/server/bin:/home/oracle/bea/modules/org.apache.ant_1.6.5/bin:/oracle/jdk/jre/bin:/oracle/jdk/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/bin:/home/oracle/bin:/oracle/jdk/bin
    Your environment has been set.
    CLASSPATH=/home/oracle/bea/patch_wls1030/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/home/oracle/bea/patch_cie660/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/oracle/jdk/lib/tools.jar:/oracle/weblogic/server/server/lib/weblogic_sp.jar:/oracle/weblogic/server/server/lib/weblogic.jar:/home/oracle/bea/modules/features/weblogic.server.modules_10.3.0.0.jar:/oracle/weblogic/server/server/lib/webservices.jar:/home/oracle/bea/modules/org.apache.ant_1.6.5/lib/ant-all.jar:/home/oracle/bea/modules/net.sf.antcontrib_1.0.0.0_1-0b2/lib/ant-contrib.jar::/oracle/weblogic/server/common/eval/pointbase/lib/pbembedded57.jar:/oracle/weblogic/server/common/eval/pointbase/lib/pbtools57.jar:/oracle/weblogic/server/common/eval/pointbase/lib/pbclient57.jar
    Initializing WebLogic Scripting Tool (WLST) ...
    Problem invoking WLST - java.lang.RuntimeException: Could not find the OffLine WLST class

    try Problem invoking WLST - Could not find the OffLine WLST class the last post on this thread, he claims to solve the problem...

  • Could not find or load main class weblogic.WLST

    Hi,
    I am trying to run a python script to create JMS components for use with iHub and i got the following error message when i try to run the script:
    C:\ihub\bin>java weblogic.WLST omipmihubwlscript.py weblogicjms Welcome1 http://<servername>:7111 OMIPMIHUBServer
    Error: Could not find or load main class weblogic.WLST
    I have run the setWLSEnv.cmd file and got the following output
    C:\oracle\Middleware2\wlserver_10.3\server\bin>setWLSEnv.cmd
    CLASSPATH="C:\oracle\MIDDLE~2\patch_wls1036\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\oracle\MIDDLE~2\patch_ocp371\profiles\default\sys_manifest_classpath\weblogic_p
    atch.jar;C:\PROGRA~1\Java\JDK17~1.0_1\lib\tools.jar;C:\oracle\MIDDLE~2\WLSERV~1.3\server\lib\weblogic_sp.jar;C:\oracle\MIDDLE~2\WLSERV~1.3\server\lib\weblogic.jar;C:\oracle\MIDDLE~2\mod
    ules\features\weblogic.server.modules_10.3.6.0.jar;C:\oracle\MIDDLE~2\WLSERV~1.3\server\lib\webservices.jar;C:\oracle\MIDDLE~2\modules\ORGAPA~1.1/lib/ant-all.jar;C:\oracle\MIDDLE~2\modu
    les\NETSFA~1.0_1/lib/ant-contrib.jar;C:\oracle\MIDDLE~2\patch_wls1036\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\oracle\MIDDLE~2\patch_ocp371\profiles\default\sys_man
    ifest_classpath\weblogic_patch.jar;C:\PROGRA~1\Java\JDK17~1.0_1\lib\tools.jar;C:\oracle\MIDDLE~2\WLSERV~1.3\server\lib\weblogic_sp.jar;C:\oracle\MIDDLE~2\WLSERV~1.3\server\lib\weblogic.
    jar;C:\oracle\MIDDLE~2\modules\features\weblogic.server.modules_10.3.6.0.jar;C:\oracle\MIDDLE~2\WLSERV~1.3\server\lib\webservices.jar;C:\oracle\MIDDLE~2\modules\ORGAPA~1.1/lib/ant-all.j
    ar;C:\oracle\MIDDLE~2\modules\NETSFA~1.0_1/lib/ant-contrib.jar;C:\oracle\MIDDLE~2\patch_wls1036\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\oracle\MIDDLE~2\patch_ocp37
    1\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\PROGRA~1\Java\JDK17~1.0_1\lib\tools.jar;C:\oracle\MIDDLE~2\WLSERV~1.3\server\lib\weblogic_sp.jar;C:\oracle\MIDDLE~2\WLSER
    V~1.3\server\lib\weblogic.jar;C:\oracle\MIDDLE~2\modules\features\weblogic.server.modules_10.3.6.0.jar;C:\oracle\MIDDLE~2\WLSERV~1.3\server\lib\webservices.jar;C:\oracle\MIDDLE~2\module
    s\ORGAPA~1.1/lib/ant-all.jar;C:\oracle\MIDDLE~2\modules\NETSFA~1.0_1/lib/ant-contrib.jar;"
    PATH="C:\oracle\MIDDLE~2\patch_wls1036\profiles\default\native;C:\oracle\MIDDLE~2\patch_ocp371\profiles\default\native;C:\oracle\MIDDLE~2\WLSERV~1.3\server\native\win\x64;C:\oracle\MIDD
    LE~2\WLSERV~1.3\server\bin;C:\oracle\MIDDLE~2\modules\ORGAPA~1.1\bin;C:\PROGRA~1\Java\JDK17~1.0_1\jre\bin;C:\PROGRA~1\Java\JDK17~1.0_1\bin;C:\oracle\MIDDLE~2\patch_wls1036\profiles\defa
    ult\native;C:\oracle\MIDDLE~2\patch_ocp371\profiles\default\native;C:\oracle\MIDDLE~2\WLSERV~1.3\server\native\win\x64;C:\oracle\MIDDLE~2\WLSERV~1.3\server\bin;C:\oracle\MIDDLE~2\module
    s\ORGAPA~1.1\bin;C:\PROGRA~1\Java\JDK17~1.0_1\jre\bin;C:\PROGRA~1\Java\JDK17~1.0_1\bin;C:\oracle\MIDDLE~2\patch_wls1036\profiles\default\native;C:\oracle\MIDDLE~2\patch_ocp371\profiles\
    default\native;C:\oracle\MIDDLE~2\WLSERV~1.3\server\native\win\x64;C:\oracle\MIDDLE~2\WLSERV~1.3\server\bin;C:\oracle\MIDDLE~2\modules\ORGAPA~1.1\bin;C:\PROGRA~1\Java\JDK17~1.0_1\jre\bi
    n;C:\PROGRA~1\Java\JDK17~1.0_1\bin;C:\app\paul.currie\product\11.2.0\client_2\bin;C:\app\paul.currie\product\11.2.0\dbhome_3\bin;C:\Program Files (x86)\PC Connectivity Solution\;C:\Wind
    ows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_13\jre\bin;;C:\oracle\MIDDLE~2\WLSERV~1.3\server\native\win\x
    64\oci920_8;C:\oracle\MIDDLE~2\WLSERV~1.3\server\native\win\x64\oci920_8;C:\oracle\MIDDLE~2\WLSERV~1.3\server\native\win\x64\oci920_8"
    Your environment has been set.
    I am totally stuck at this point so any help would be much appreciated.
    Cheers
    Paul

    I have just tested both on a Windows and a Linux server and it works fine.
    D:\oracle\product\Middleware\wlserver_10.3\server\bin>setWLSEnv.cmd
    CLASSPATH=D:\oracle\product\MIDDLE~1\patch_wls1035\profiles\default\sys_manifest_classpath\weblogic_patch.jar;D:\oracle\
    product\MIDDLE~1\patch_jdev1111\profiles\default\sys_manifest_classpath\weblogic_patch.jar;D:\oracle\product\JAVA_C~1\li
    b\tools.jar;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server\lib\weblogic_sp.jar;D:\oracle\product\MIDDLE~1\WLSERV~1.3\serve
    r\lib\weblogic.jar;D:\oracle\product\MIDDLE~1\modules\features\weblogic.server.modules_10.3.5.0.jar;D:\oracle\product\MI
    DDLE~1\WLSERV~1.3\server\lib\webservices.jar;D:\oracle\product\MIDDLE~1\modules\ORGAPA~1.1/lib/ant-all.jar;D:\oracle\pro
    duct\MIDDLE~1\modules\NETSFA~2.0_1/lib/ant-contrib.jar;D:\oracle\product\MIDDLE~1\patch_wls1035\profiles\default\sys_man
    ifest_classpath\weblogic_patch.jar;D:\oracle\product\MIDDLE~1\patch_jdev1111\profiles\default\sys_manifest_classpath\web
    logic_patch.jar;D:\oracle\product\JAVA_C~1\lib\tools.jar;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server\lib\weblogic_sp.ja
    r;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server\lib\weblogic.jar;D:\oracle\product\MIDDLE~1\modules\features\weblogic.ser
    ver.modules_10.3.5.0.jar;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server\lib\webservices.jar;D:\oracle\product\MIDDLE~1\mod
    ules\ORGAPA~1.1/lib/ant-all.jar;D:\oracle\product\MIDDLE~1\modules\NETSFA~2.0_1/lib/ant-contrib.jar;
    PATH=D:\oracle\product\MIDDLE~1\patch_wls1035\profiles\default\native;D:\oracle\product\MIDDLE~1\patch_jdev1111\profiles
    \default\native;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server\native\win\x64;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server
    \bin;D:\oracle\product\MIDDLE~1\modules\ORGAPA~1.1\bin;D:\oracle\product\JAVA_C~1\jre\bin;D:\oracle\product\JAVA_C~1\bin
    ;D:\oracle\product\MIDDLE~1\patch_wls1035\profiles\default\native;D:\oracle\product\MIDDLE~1\patch_jdev1111\profiles\def
    ault\native;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server\native\win\x64;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server\bin
    ;D:\oracle\product\MIDDLE~1\modules\ORGAPA~1.1\bin;D:\oracle\product\JAVA_C~1\jre\bin;D:\oracle\product\JAVA_C~1\bin;C:\
    Program Files\Legato\nsr\bin;C:\PROGRA~2\CA\SHARED~1\ETPKI\lib;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C
    :\Windows\System32\WindowsPowerShell\v1.0\;D:\oracle\Java\current\jre\bin;C:\PROGRA~2\CA\IDENTI~1\PROVIS~1\BIN;C:\Progra
    m Files (x86)\CA\SharedComponents\CAM\bin;D:\oracle\product\MIDDLE~1\WLSERV~1.3\server\native\win\x64\oci920_8;D:\oracle
    \product\MIDDLE~1\WLSERV~1.3\server\native\win\x64\oci920_8
    Your environment has been set.
    D:\oracle\product\Middleware\wlserver_10.3\server\bin>java weblogic.WLST
    Initializing WebLogic Scripting Tool (WLST) ...
    Welcome to WebLogic Server Administration Scripting Shell
    Type help() for help on available commands
    wls:/offline>

  • How to get instance of Class with its type parameters

    Hi,
    Have any of you folks been dealing with generics long enough to show me how this should be written? Or point me to the answer (I have searched as well as I could).
    I boiled down my situation to the included sample code, which is long only because of the inserted comments. And while boiling I accidentally came across a surprise solution (a bug?), but would obviously prefer a smoother solution.
    My Questions (referred to in the code comments):
    #1. Is there a way to get my parameterized type (classarg) without resorting to using the bogus (proto) object?
    #2. Can anyone understand why the "C" and "D" attempts are different? (All I did was use an intermediate variable????) Is this a bug?
    Thanks so much for any input.
    /Mel
    class GenericWeird
       /* a generic class -- just an example */
       static class CompoundObject<T1,T2>
          CompoundObject(T1 primaryObject, T2 secondaryObject)
       /* another generic class -- its main point is that its constr requires its type class */
       static class TypedThing<ValueType>
          TypedThing(Class<ValueType> valuetypeclass)
       // here I just try to create a couple of TypedThings
       public static void main(String[] args)
          // take it for granted that I need to instantiate these two objects:
          TypedThing<String>                        stringTypedThing = null;
          TypedThing<CompoundObject<String,String>> stringstringTypedThing = null;
          // To instantiate stringTypedThing is easy...
          stringTypedThing = new TypedThing<String>(String.class);
          // ...but to instantiate stringstringTypedThing is more difficult to call the constructor
          Class<CompoundObject<String,String>> classarg = null;
          // classarg has got to be declared to this type
          //    otherwise there will rightfully be compiler error about the constructor call below
          // This method body illustrates my questions
          classarg = exploringHowToGetTheArg();
          // the constructor call
          stringstringTypedThing = new TypedThing<CompoundObject<String,String>>(classarg);
       } // end main method
       // try compiling this method with only one of A,B,C,D sections uncommented at a time
       private static Class<CompoundObject<String,String>> exploringHowToGetTheArg()
          Class<CompoundObject<String,String>> classarg = null;
          /* Exhibit A: */
      ////     classarg = CompoundObject.class;
             results in compiler error "incompatible types"
             found   : java.lang.Class<GenericWeird.CompoundObject>
             required: java.lang.Class<GenericWeird.CompoundObject<java.lang.String,java.lang.String>>
                   classarg = CompoundObject.class;
                                            ^
             I understand this.  But how to get the type information?
          /* It's obnoxious, but it looks like I will have to construct a temporary
              prototype instance of type
                 CompoundObject<String,String>
              in order to get an instance of
                 Class<CompoundObject<String,String>>
              (see my Question #1) */
          CompoundObject<String,String> proto = new CompoundObject<String,String>("foo", "fum");
          /* Exhibit B: */
      ////     classarg = proto.getClass();
             results in compiler error: "incompatible types"
             found   : java.lang.Class<capture of ? extends GenericWeird.CompoundObject>
             required: java.lang.Class<GenericWeird.CompoundObject<java.lang.String,java.lang.String>>
                   classarg = proto.getClass();
                                            ^
          /* Exhibit C: */
      ////     classarg = proto.getClass().asSubclass(proto.getClass());
             results in compiler error: "incompatible types"
             found   : java.lang.Class<capture of ? extends capture of ? extends GenericWeird.CompoundObject>
             required: java.lang.Class<GenericWeird.CompoundObject<java.lang.String,java.lang.String>>
                   classarg = proto.getClass().asSubclass(proto.getClass());
                                                         ^
          /* Exhibit D: (notice the similarity to C!): */
      ////     Class tmp1 = proto.getClass();
      ////     classarg = tmp1.asSubclass(tmp1);
          /* It compiles (see my Question #2) */
          return classarg;
       } // end method exploringHowToGetTheArg()
    } // end class GenericWeird

    Thanks so much, Bruce. (Oh my goodness, how would I have ever come up with that on my own?)
    So in summary
    This doesn't compile:
          classarg = (Class<CompoundObject<String,String>>)CompoundObject.class;but these do compile:
          classarg = (Class<CompoundObject<String,String>>)(Class)CompoundObject.class;or
          Class coclass = (Class)CompoundObject.class;
          classarg = (Class<CompoundObject<String,String>>)coclass;And this doesn't compile:
           classarg = proto.getClass().asSubclass(proto.getClass());but this does:
           Class tmp1 = proto.getClass();
           classarg = tmp1.asSubclass(tmp1);

  • How to find Correct IDoc Status in SAP

    Hi All,
    I need some help on IDoc scenario, I have custom program to create Idoc and as well it will send IDoc to XI. I want to know idoc staus in the program to update custom table whether idoc sent successfully or not but idoc giving status as 03 (Data passed to port OK) irrespective of idoc send or not, actually idoc not sent to xi when I check SM58 showing error.
    Please advice me how to find correct idoc status inside program itself.
    **-----Create IDoc
      CALL FUNCTION 'IDOC_OUTBOUND_WRITE_TO_DB'
        TABLES
          int_edidd      = i_edidd
        CHANGING
          int_edidc      = wa_int_edidc
        EXCEPTIONS
          idoc_not_saved = 1
          OTHERS         = 2.
      COMMIT WORK.
      i_edidc = wa_int_edidc.
      APPEND i_edidc.
      REFRESH i_edidd.
    **-----Send Idoc
      CLEAR i_edidd.
    **-------Send Idoc to XI
      CALL FUNCTION 'EDI_OUTPUT_NEW'
        EXPORTING
          onl_option = 'B'
          error_flag = ' '
        TABLES
          i_edidc    = i_edidc
          i_edidd    = i_edidd.
      COMMIT WORK.
      READ TABLE i_edidc INDEX 1.
    **-----Update Dispatch order status based on Idoc status.
      IF sy-subrc =  0 AND i_edidc-status ='03'.
        znxi01_update c_03 i_edidc-docnum.
        gw_success_record = gw_success_record + 1.
      ELSE.               " Error in Data Transfer
        znxi01_update c_02 i_edidc-docnum.
        gw_fail_record = gw_fail_record + 1.
      ENDIF.

    Hi Anil,
    for setting IDOC Status you can send back a IDOC of type <i>ALEAUD01</i>.
    The function IDOC_INPUT_ALEAUD takes automatically this IDOC and writes the status to the origin IDOC.
    Regards Mario

  • Where do I find the sevlet base classes in Tomcat 4.1.27 ?

    Where do I find the sevlet base classes in Tomcat 4.1.27 ?
    Thanx

    If you mean HttpServlet etc, look in the ${env.CATALINA_HOME}/common/lib dir.

Maybe you are looking for