Deploy Business Logic Extensions (BC4J changes) back to Oracle 11i

Hi all,
I am new to OAF. I made a small change to the SELECT SQL of an OAF page and I am able to see my initial change in 11i. Then I made more changes to the same SQL and I did same steps to deploy back to 11i (i.e. ZIP up all files under JDEV_USER_HOME\myclasses\ and update the server files; run jpximport.bat to update MDS respository). When I tried again in 11i, it does not have my latest change.
The OA Framework Developer Guide mentions to bounce the web server as part of the deployment steps. Do we have to bounce the web server? In our team environment, bounce the web server involves sending request to DBA, etc.. Any workaround so I can retest over and over without going through requests?
Thanks,
Mike

There are some changes the effects of which are not visible unless apache is bounced, for example, changes to java files, or xml defn.
You should ideally make changes and test everything on jdeveloper and when satisfied, move code to server.
Thanks
Tapash

Similar Messages

  • Business Logic in BC4J. Guide please

    I have a question regarding BC4J
    I am currently reading the white paper on this :
    http://www.oracle.com/technology/products/jdev/info/techwp20/wp.html#introduction
    Find figure 8(View Objects Cooperate with Related Entity Objects...'
    and see the 2nd para, which has a statement :
    " For example,assume that an Employee Entity Object has a busined
    logic which raises the employee's salary when she is promoted "
    My Question:
    How can you build this business logic into the database? Isnt business logic supposed to be the integrity constraints,checks and default values for a table that are defined during the table creation?
    How can you build such a business logic?
    Perhaps we can build this thru' triggers.Am I right or can some one please
    clarify this point?

    Isnt business logic supposed to be the integrity constraints,checks and default values for a table that are defined during the table creation?As this looks very much like my definition of business logic I guess I'd better run with it.
    Business logic is the rules that control the use of data. So, "every employee must belong to a valid department" is a business rule, which we can implement through a foreign key constraint. There are other simple rules which we can implement using unique constraints, not null constraints, default values, etc.
    Because we tend to focus on database implementation we tend to forget that the structures in the database actually map to business requirements in the real world. Why is EMPNO the primary key of the EMP table? Because the business needs a simple way of uniquely identifying each employee, and name is rarely sufficient.
    The example you give is a more complicated business rule: when such-and-such an event occurs, do this thing. In this case you are right to suggest...
    Perhaps we can build this thru' triggers
    CREATE OR REPLACE TRIGGER emp_salgrade BEFORE UPDATE OF grade ON employees FOR EACH ROW
    DECLARE
        gsal NUMBER;
    BEGIN
        SELECT losal
        INTO gsal
        FROM salgrade
        WHERE  grade = :NEW.grade;
        IF gsal < :NEW.sal THEN
           :NEW.sal := gsal;
        END IF;
    END;Cheers, APC

  • ORaMTS Support of Multiple Business Logic Servers

    Does the 8.1.7.4.0 of Oracle Services For MTS beta support multiple business logic servers connecting to a single Oracle database instance using MTS DTC coordinated transactions without a single point of failure?
    We would like to ensure that if any business logic server goes off line, that they will not effect any of the other business logic servers.
    In the previous version of OraMTS, if the machine running OraMTS went down, no other machines were able to perform MTS distributed transactions. Does 8.1.7.4.0 of Oracle Services For MTS beta remove this dependency?

    Mark, we came out with 8.1.7.4.0 precisely for the reasons you have stated. There is no longer a Windows NT Oracle Service For MTS per database. The logic to enlist Oracle connections in MTS transactions, and the logic to subsequently commit/abort these transactions is fully contained within the middle-tier dlls i.e. ORAMTS.DLL. This removes the single point-of-failure in pre 8.1.7.4.0 versions, and also makes the solution more scalable.

  • BC4J - Big Project - Business Logic

    What is the suggested best practice on where to locate business logic in a big application?
    It would appear that entity objects are good for table/domain level validation.
    View objects are good to ensure that the data between multiple tables is copesthetic.
    But where would one place business process logic that could potentially span multiple views and even multiple application modules?
    Also what is the difference between retrieving an application module using the ApplicationModuleHome.create function and from the applicationpool?
    Thanks,
    Marty
    null

    re: "duplicate"
    You betchya. This is mimicing a SmallTalk implementation I worked with years back.
    In some cases, the checks are not duplicated because they share "objects" instantiated for those entities. And in the case of 3 frames all with the same field.. only one check fires ( the active frame where they entered the data ) and all the others don't fire.. they just clean up when the user corrects the data.
    In some cases putting validation in the EO appears to just add work at both ends, and adds another layer of confusion for programmers. ( I.E. A programmer is looking at the code.. it is NOT apparent without complete knowledge of the EO code what is and is not being checked. Is that maintainable? maybe, maybe not )
    Here's an example of an edit check... confirming that a part number is valid for a custom Find Panel.. and while we're at it, let's turn * to % for a LIKE statement so all our Access users don't get confused:
    String oldPart = ((ImmediateAccess)partNumber_tf.getDataItem()).getValueAsString().toUpperCase();
    String wildPart = new String();
    if (oldPart.indexOf("*") > 0)
    { wildPart = oldPart.substring(0,oldPart.indexOf("*"))+"%"+
    oldPart.substring(oldPart.indexOf("*")+1);
    oldPart = wildPart;
    try { ((ImmediateAccess)partNumber_tf.getDataItem()).setValue(oldPart); }
    catch ( Exception e0 ) { System.out.println(e0.toString()); }
    if (oldPart.indexOf("%") < 0)
    if (!isValidPartNumber(oldPart) )
    try { ((ImmediateAccess)partNumber_tf.getDataItem()).setValue(""); }
    catch (Exception e0) { System.out.println(e0.toString()); }
    boolean isValidPartNumber( String partNumber )
    boolean isValid = true;
    if (!partNumber.equals("") )
    try
    Statement call= OpenDBConnections.myJdbcConnection.createStatement();
    ResultSet rset=call.executeQuery("SELECT getPartDescription('"+
    partNumber+
    "') AS PART_DESC FROM DUAL");
    rset.next();
    if (rset.getString("PART_DESC").startsWith("ERROR") )
    statusLine_tf.setText("USER ERROR: Invalid Part Number!");
    Toolkit.getDefaultToolkit().beep();
    isValid = false;
    else
    { status_tf.setText(""); }
    rset.close();
    call.close();
    catch (SQLException esql)
    {System.out.println(esql.toString());}
    return isValid;
    Notes:
    1. I do a JDBC call cuz I don't want a lock on my target records. It's a bloody read only request. ( Or is there a way to set that up..as far as I can tell UPDATABLE seems to affect the UI when defined in the View Object.. it has nothing to do with locking? The EO may be updatable by the application... by read only for this particular purpose... )
    2. If I understand you right, you are saying to do the IsValidPartNumber code in the validateEntity() method. I want it NOW.. not at commit time.. or is validateEntity "run" on any change to the EO? Or should it be put on the impl setr so that the try catch around the setValue() of the DACF element will catch it? ( I like that )
    3. The status line and beeping is managed by the try catch around the dacf setValue(), as well as the clearning of the appropriate DACF control and refocus (if needed ).
    4. And that the validation should REALLY be applied to a DOMAIN of "PartNumberDomain".. since it really applies to many EOs with attributes that are of domain "PartNumberDomain".
    That last item is VERY interesting to me. I used such stuff in Rdb in the database. Catch is that domain and their power and implementation is scantily described in training and in the online Help.
    I'm guessing that when I do a DACF entry that the setr in the EO can be used to validate.. and that the DOMAIN edit gets automatically executed as well.. and that it shows up as a JBOException to the try/catch at the application source level for the programmer to deal with, right?
    Note that when Dec/Rdb started on this sorta course 10 years ago, it was clear to everyone that it was a house of ravioli code.. and that without a POWERFUL object repository it was very, very difficult for la rge projects to be built so that programmers would have clear visibility to all the conditions/issues.
    Want to bet that you can count on one hand (or less) the number of customers outside of Oracle who have implemented domain validation code and applied it to Entity Object attributes?
    Note that in all these cases, I still need to implement the same checks in my triggers to protect the database against ALL comers. So everything gets checked twice.
    re: BC4J, wrappers, and java stored procedures. All interesting ideas. I booted that option out during this implementation because the goal was to implement the application... I estimated we'd extend the project another 2-3 months by taking the approach you imply, due to learning curve, conceptual errors on our part during implementation, bugs in the Oracle code awaiting fixing, ad nauseam. That rough estimate has been born out by the fact that JDEV issues of implementation has caused my project to slide over 2 months. Simple, easy things I had alotted a short effort for based on experience with MS Access, Delphi, Forms and other tools turned out to wildly off base. ( Example: the imageControl that simply doesn't work, but is documented as being so easy and quick to put in ).
    Thanks again. BTW. If you don't know, I'll be at Oracle HQ on Friday the 16th. Hope to see you again, if just to say hi.
    null

  • Push messages from business logic into backing bean

    In my simple web application a table with the contents of a database table is shown to the client. Now I want this table in the browser to be updated each time the db table is updated. In my business logic a jms message is fired to a specified topic each time the db table is updated. The reverse ajax stuff needed for the client update is provided by the Icefaces jsf implementation. There is a backing bean for each session which is responsible for the server side rerendering of the client. Now my question is: How do I connect the bussiness logic firing a jms message if the db table is updated, with the backing bean?
    My thoughts:
    1. Create a message listener for the topic. Each time the message listener receives a message it notifies the backing beans of each session to rerender the client. But how does the message listener know about the backing beans?
    2. The backing bean responsible for rerendering the client adds itself as a listener. But where? As I understand it cannot be a backing bean and a jms MessageListener at the same time.
    Has anyone an idea/pattern for this problem?

    You could keep a list of beans that need to be notified in the application scope. (You should probably use weak references so that they may be garbage collected.) Then you JMS listener could get access to them.
    Somebody posted a thread recently where they were doing something very similar, you might want to try to find it.

  • Decision Table values changes back after deploy.

    Hi All,
    I created Decision Table and filled it by some values.
    Then I built my Rules Composer project and deployed it.
    After that I changed some values in my Decision Table from RulesManager and uploaded their.
    Then I deployed my Rules Composer again.
    After that I looked in Decision Table from RulesManager again and saw that all values were changed back to their original values.
    Does anybody knows is this feature or bug?

    Hello SMatveev,
    The functionality is as follows:
    1. You selected the active version to open the project - made changes to the rules, uploaded this. This version though is the latest, it has not been activated. The rules project which will be open will still be the active version, that means the changes recently made will not be displayed.
    2. You selected the latest version to open the project - made changes to the rules, uploaded this. This version is the latest as well as the active version. The rules project which will be open will be the latest version, that means the changes recently made will be displayed.
    3. After the changes were made, you uploaded (even activated) the changes. The rules are changed in NWDS and uploaded, now the version of the rules as were in NWDS at the time of deployment will be the latest/active version of rules in the server.
    The behavior you saw is expected. (3rd point)
    The way to prevent this loss of modifications made to rules using rules manager, is to - first download the runtime version of rules from server using the option available in NWDS; make the required changes to this active version and upload this DC to server.
    Best Regards,
    Arti

  • Changing method signature according to the new business logic

    Dear java community,
    Recently I'm confronted with one issue and I want to know your opinion about this.
    ISSUE DESCRIPTION:
    In one of my business tier class I had method register user:
    public RegistrationStatus registerUser(User user, RegistrationType type, boolean confirmationRequired) throws MyBusinessException;According to new business rules I need to add 2 arguments to this methods (boolean isCustomBank and String customBankName).
    All arguments in method are mandatory and I need them in registration process. It is also possible that in future it would be needed to pass more arguments to registerUser method (according to changes in business logic).
    POSSIBLE SOLUTIONS:
    A) Create userContext (as map) and collect there some arguments that needed in registration process (it would be used not only in this method, so it also would contain some other arguments not needed in registration). Signature of this method would look like this:
    public RegistrationStatus registerUser(User user, RegistrationType type, Map userContext) throws MyBusinessException;Invocation would look like this:
    Map userContext = new HashMap();
    userContext.put(UserCostants.CONFIRMATION_REQUIRED, form.isConfirmationRequired());
    userContext.put(UserCostants.CUSTOM_BANK, form.isCustomBank());
    userContext.put(UserCostants. CUSTOM_BANK_NAME, form.getCustomBankName);
    myRegistrationService.registerUser(form.getUser, form.getRegistrationType(), userContext);And UserCostants:
    public interface UserCostants {
       String CUSTOM_BANK = "customBank";     
       // other constants
    }B) Create userContext (as class � wrapper of map from previous solution) and collect there some arguments that needed in registration process (it would be used not only in this method, so it also would contain some other arguments not needed in registration). Signature of this method would look like this:
    public RegistrationStatus registerUser(User user, RegistrationType type, UserContext ctx) throws MyBusinessException;Wrapper class:
    public class UserContext {
       Map userContext = new HashMap();
       public Boolean isCustomBank() { return (Boolean) userContext.get("customBank"); }
       public void setCustomBank(Boolean customBank) { userContext.put("customBank", customBank);}
       // other get and set metods
    }C) Create value object UserRegistrationData that would hold data ONLY for user registration method. Example of the signature:
    public RegistrationStatus registerUser(User user, RegistrationType type, UserRegistrationData registrationData) throws MyBusinessException;And value object class:
    public class UserRegistrationData {
       public boolean customBank;
       public boolean confirmationRequired;
       public String customBankName;
       public boolean isCustomBank() { return this.customBank; }
       public void setCustomBank(boolean customBank) { this.customBank = customBank;}
       // other get and set metods
    }D) Just add new arguments to method's signature:
    public RegistrationStatus registerUser(User user, RegistrationType type, Boolean confirmationRequired,
                                           boolean isCustomBank, String customBankName) throws MyBusinessException;E) your solution....
    QUESTIONS:
    I don't tell you my opinion and pros and cons because I want to know your independent opinion.
    Which of these solutions are good and why do you think they are good?
    Which of these solutions are bad and why do you think they are bad?
    Thanks.

    Hi ,
    I thought of you overload that method and add into the Map.
    Its best solution, even we use the same scenario in my application.
    Thanks and Regards
    Maruthi.

  • Future support for using PL/SQL core business logic with ADF BC

    We want to migrate our large Forms client/server (6i) application to ADF, possibly using a migration tool like Ciphersoft Exodus.
    One scenario could be to use ADF BC and ADF-Faces or a different JSF-Implementation for presentation and business layer but keep our heavy PL/SQL-businesslogic inside the Oracle database in packages, triggers, functions and procedures.
    This scenario could be chosen due to the huge amount of interconnected logic inside the database (10 years of development; no technical components; any package may access any table and more of this kind of dependencies). The business logic nowadays held in Forms client will be moved mainly into the database as a prerequisite to this scenario.
    Choosing this "keep-logic-in-DB"-scenario we need a good support by ADF BC to do so. We know and prototyped that it is possible to call some PL/SQL via JDBC from ADF BC and it is possible to use stored procedure calls for standard business entity data access (ins, del, upd, ..). But this does not solve our problems. We want to reuse core business logic coded in PL/SQL. This is much more than change the ADF standard behavior for an update with an own PL/SQL-call.
    Now my question:
    Will there be a kind of sophisticated support to use ADF BC in combination with database-kept logic?
    If so, when will this happen and how will the common problems of transactional state inside the database and inside the ADF BC be solved? Any plans or ideas yet?
    Many other clients do have similar applications built in Forms and PL/SQL and would be glad to hear about a path of direction.
    I've read the technical article 'understanding the ADF BC state management feature' which you have contributed to. One current limitation is pointed out there: Using PL/SQL with ADF BC limits ADF AM pooling to 'restricted level' which reduces scalability.
    Are you aware of additional main problems/tasks to solve when using PL/SQL heavily with ADF BC, which we have to think about?
    Thank you for any response.
    Ingmar

    My main problem is two 'concurrent' areas holding state in an application system based on DB-stored PL/SQL-logic in combination with ADF BC.
    For a new System everything can be made ok:
    Sure, it is possible to build a new system with the business logic included in ADF BC only. All long-living state will be handled in the BC layer ( including support for UnitsOfWork longer than the webside short HTTP-requests and HTTP-sessions and longer than the database transactions.
    For an old system these problems arise:
    1. DB data changes not reflected in BC layer:
    Our PL/SQL-logic changes data in tables without notifying the ADF BC layer (and its cache). To keep the data in ADF BC entity objects identical to the changed database content a synchronization is needed. BC does not know which part of the application data has been changed because it has not initiated the changes through its entity objects. Therefore a full refresh is needed. In a Forms4GL environment the behavior is similar: We do frequently requeries of all relevant (base)tables after calling database stored logic to be sure to get the changed data to display and to operate on it.
    -> Reengineering of the PL/SQL-logic to make the ADF BC layer aware of the changes is a big effort (notifying BC about any change)
    2. longer living database transactions
    Our PL/SQL-logic in some areas makes use of lengthy database transactions. The technical DB-transaction is similar to the UnitOfWork. If we call this existing logic from ADF BC, database state is produced which will not be DB-committed in the same cycle.
    This reduces scalability of ADF BC AM pooling.
    Example:
    a) Call a DB-stored logic to check if some business data is consistent and prepare some data for versioning. This starts a DB-transaction but does not commit it.
    b) Control is handed back to the user interface. Successful result of step a) is displayed
    c) User now executes the versioning operation
    d) Call another DB-stored logic to execute the versioning. DB-transaction is still open
    e) Business layer commits the transaction automatically after successful finishing step d). Otherwise everything from a) to e) is rolled back.
    -> redesign of this behavior (= cutting the 1to1 relation between LogicalUnitOfWork and the technicalDatabaseTransaction is a big effort due to the big amount of code.

  • Business logic in PL/SQL?

    Hello,
    I am designing a 3-tier, web-based intranet application for my client. It's going to be a WebSphere portal app with Struts, running on Oracle 8.1.7.
    One of the requirements is to implement the business logic in the back-end (PL/SQL), not in Java (although that is what I'm used to do). The reason probably has something to do with fear of performance issues ("the more code runs in Oracle, the faster") and resource planning ("more people here know Oracle better than Java").
    This unusual (?) choice in my humble opinion leaves me with two major issues; how to cache database results and how to perform the O/R mapping.
    I know how to use CallableStatements and JDBC, but I'd really like to avoid such a solution now we have EJB 2.1 and Hibernate and everything. And without caching as done by any sensible app server I fear performance issues.
    Does anyone know a tool that can perhaps generate Java code and performs the O/R mapping? Or a tool that avoids me having to implement up to a hundred (!) CallableStatements and ResultSet-To-JavaBean mappings. I've seen Apache's commons-dbutils that seems to do this.
    Does anyone have experience implementing business logic in PL/SQL and calling procedures from Java? Is performance really an issue here?
    Thanks in advance for any input,
    regards,
    Bram Rooijmans

    This unusual (?) choice in my humble opinion leaves me
    with two major issues; In non-trivial applications excluding all business logic from the database is usually an architecture or design bug. Businesses do use the database directly due to legacy, tools, comfort level, etc. And in those cases the data still needs to be consistent. Not to mention that for some business logic the database can be orders of magnitude faster in running it versus external logic.
    On the other hand I would consider it a bug as well if someone told me that all the business logic must be in the database and no where else. (At the very least I would suspect and question their definition of business logic in that case.)
    I know how to use CallableStatements and JDBC, but I'd really like to avoid such a solution now...How are you going to implement any non-trivial business logic in oracle without using stored procs?
    Does anyone have experience implementing business logic in PL/SQL and
    calling procedures from Java? Not sure of the question. Certainly I have implemented business logic in PL/SQL. And many people have used stored procs via java.
    Is performance really an issue here?No idea. That is a dependency of your system, not of java/databases in general.
    I have seen java only solutions that even with scalling take hours to do operations that could be done in much less time using the database itself.
    I have seen requirements which would have taken hours even in the database and changing the requirements meant it took less than 2 minutes. (It had nothing to do with java nor the database.)
    I have seen code implementations which took significant database processing time where the entire solution could have been done without the database at all.
    I have seen solutions where, due to business requirements, the same business logic was implemented in different languages and in slightly different ways in each. Implementing the logic in stored procs meant that all of the systems that used it now would be using the same rules. In that case it is possible that the solution was actually slower. But if it was it was not noticed and the consistency was much more important.

  • Business Logic across applications

    Is it possible to share business logic between multiple applications (different workspaces). If yes, what is the bext way to do it so that when the business logic (in a centralized location) changes all the applications will be updated with the new change. Is this even feasible and will that require re-deployment?
    Any thoughts on this is appreciated.
    Thanks.

    You didn't specify what type of business logic and what technologies you are looking at.
    But for example with ADF Business Components here is what you can do:
    http://download.oracle.com/docs/html/B25947_01/bcadvgen007.htm#CHEFECGD

  • Real app business logic, access serialization

    Hi,
    in our real application we have some business logic.
    The bc4j examples show for example how to limit the value
    of a colum between two values.
    But our business logic is not limited to a so
    simple case.
    For us is very common that business logic involves
    more (aggregate) tables.
    For example consider a invoice and
    the line of the invoice. These are two tables but
    a business rule say that the sum of the line should
    be the total column of the invoice. Moreover the
    total of the invoice can't be zero. The need the
    existence of the total column in invoice is required
    because speed up queries and for the constraints and
    we can't make it only a display value of a
    query.
    To avoid data corruption we have noted that access
    should serialized for a invoice. Otherwise two user
    can change the lines and the total can be correct in the
    session but may not be correct at the end of the
    two commit.
    How can we obtain this in bc4j? Where should we place
    the code? How to make access of the invoice serialized?
    There is some documentation or code example of this?
    Very thanks in advance!

    By marking the lines entity to be composed with the invoice entity, and marking the "lock top-level entity" you can automatically achieve the serialization you're looking for using BC4J.
    If anything in the invoice, or any composed children are modified, it will lock the top-level parent (invoice) before allowing the edit to proceed.
    To express a rule that asserts a rule about the sum of the detail lines, write a entity-level validation rule in the invoice (parent) entity which uses the association accessor to iterate the lines and calculate the sum.

  • Accessing LCDS Persistence Layer for use in Server-Side Business Logic

    Within server-side business logic, I want to be able to get a persisted object from LCDS, manipulate  that object, and then use LCDS to persist those changes to the database  as well as send those changes to the client.
    Is it possible to access LCDS' persistence layer (Hibernate) to be used by server-side business logic?
    I have attempted to use DataServiceTransaction.getItem(...).  However, for objects that contain a collection of other objects I get this error:
    [LCDS] Runtime exception while trying to fetch a property from hibernate: flex.data.DataServiceException: There is no current message broker to return.
    When calling DataServiceTransaction.updateItem(...) for objects that contain a collection of other objects, I get this error:
    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.sd.pojo.Book.chapters, no session or session was closed
    Also, it appears that DataServiceTransaction.updateItem does NOT update the database?
    I have resorted to building my own Hibernate SessionFactory, but that seems unnecessary.
    One other piece of information is that I am using the Fiber modeling tool to build and deploy the model to the server.  I am generating the Java classes with Fiber and making them available to be used on the server.
    Thanks,
    Collin

    Thanks for the help guys.
    I guess what I'm really trying to get straight in my own mind is whether supporting interraction and control of eJB database interraction is still using the same functionality as having a stand alone app interracting with a db.
    I'm thinking about; the implications of using eJBs specific query language and the different way in which eJBs use db connections (either for the period of their lifetime or just for the duration of one interaction) compared with a stand alone app, which would maintain a connection to the database(s) while it is open.
    Connection pooling and caching of DB objects is often quoted as being a middle tier activity, but what does this mean when all 3 tiers reside on the same machine?
    Once again thanks for your comments and advice.
    Mark

  • Email messages now show "To: me" instead of the name or email address and I want to know how to change back to the way it was.

    I use several yahoo email addresses and it has always been very convienent to see if it is a personal or business related message by simply seeing the To: line. Now all of sudden all I see is "me" and it is not at all helpful. I didn't make the change nor authorize it to be done. I am not even sure if this is a Firefox issue or a Yahoo issue. I would like to know how to change back to show the full email name or address.

    hello shackiraq, you'd have to contact yahoo's support about this issue - firefox doesn't handle your emails but just renders a website like it is provided to you by the server of a webmail service.
    https://help.yahoo.com/kb/mail-for-desktop

  • Problem in creating a callable object of type Business Logic

    Hi SDN,
    I am trying to create a callable object of type Business Logic in CE.
    When I give all information and click Next, I get this error message.
    Error while loading configuration dialog: Failed to create delegate for component com.sap.caf.eu.gp.ui.co.CExpConfig. (Hint: Is the corresponding DC deployed correctly? Does the DC contain the component?)
    Can anybody help me out with this problem.
    Regards,
    Sumangala

    Hi.
    I'm having the same problem as Senthil in NW2004s SP15 with my application service and methods not showing up in the Callable Object wizard for Composite Application Services after I choose the Endpoint.  The only application name that shows up in the wizard is caf.tc, and the only service names that show up for it are LDDataAccessor, Metadata, and PropPermissionService.
    My IDE is on one machine and the application server I deploy to is located on a different machine.  My endpoint to the remote application server looks to be correctly configured.  The Composite Application Service seems to be deployed properly as I'm able to see it and test that it works in the Web Services Navigator <http://remotehost:50000/wsnavigator/>
    My deployed application service is a remote enabled service and is also web services enabled as well.
    I'm not sure if this is relevant, but I noticed that the generated Java code does not create any remote EJB interfaces (only home and local interfaces were generated).
    Something else I noticed is that when I proceed to the External Service Configuration -> Business Entities screen <http://remotehost:50000/webdynpro/dispatcher/sap.com/cafUIconfiguration>, I only see three business entities displayed, and the following error message is displayed: "Corrupt metadata has been detected. This may prevent some objects from being displayed. Check the server log for more details."  I was unable to find anything in the instance log files.  Is the error message indicative of the problem?
    I am developing locally without a NetWeaver Development Infrastructure (NWDI) in place.
    I'm wondering if the credentials specified in the endpoint require any special roles or privileges.
    Senthil, do any of these additional descriptions apply to you as well?
    Edited by: Ric Leeds on Jun 20, 2008 4:37 PM

  • How to write XMP changes back to Photoshop DOM in CS SDK?

    Hello,
    I'm learning to use the ActionScript library for XMP in conjunction with the CS SDK to build Photoshop panels.
    I see from the Extension Builder samples that the AssetFragger application demonstrates how to use XMP for annotating comments to image files in Illustrator using com.adobe.illustrator.  In the runSet() method the XMP data is manipulated then the changes are stored in the document.  So after creating a new XMP node ( XMPArray.newBag() ) it uses doc.XMPString to write the serialized XMP back to the document, then sets doc.saved = false.
            public function runSet():void
                var app:Application = Illustrator.app;
                var doc:Document = app.activeDocument;
                var updateText:String = AssetFraggerModel.getInstance().xmlTextNugget;
                 var xmpString : String = doc.XMPString;
                var xmpMeta : XMPMeta = new XMPMeta(xmpString);
                var ns : Namespace = new Namespace(xmpMeta.getNamespace("xmp"));
                xmpMeta.ns::AssetFraggerDescription = XMPArray.newBag();
                xmpMeta.ns::AssetFraggerDescription[1] = updateText;
                var tmp : String = xmpMeta.serialize();
                doc.XMPString = tmp;   
                doc.saved = false;
    However, using com.adobe.photoshop instead, the XMLString property on the Application activeDocument instance is not available, the doc.saved property is not modifiable (marked as read-only), and the Photoshop Application activeDocument has a xmpMetadata.rawData property available whereas Illustrator did not.  The Photoshop activeDocument.xmpMetadata.rawData is marked as read only, so it can be used to get the plain XMP as a string directly, but once modified the XMP cannot be updated in that property.  Example:
            public static function traceXMP():void
                var app:Application = Photoshop.app;
                var doc:Document = app.activeDocument;
                var xmpString:String = doc.xmpMetadata.rawData;
                var xmpMeta:XMPMeta = new XMPMeta(xmpString);
                var metaXML:XML = xmpMeta.serializeToXML();
                var Iptc4xmpCore:Namespace = new Namespace(XMPConst.Iptc4xmpCore);
                // demonstrate that a leaf in IPTC can be changed and written to the trace console
                xmpMeta.Iptc4xmpCore::CreatorContactInfo.Iptc4xmpCore::CiUrlWork = 'http://test.com/';
                trace(ObjectUtil.toString(xmpMeta.Iptc4xmpCore::CreatorContactInfo.Iptc4xmpCore::CiUrlWor k.toString()));
                // but now how to write the XMP change back to the Photoshop DOM?
    My question is, for a given image file exported as from Lightroom that is rich in custom IPTC metadata, how does one update the metadata in Photosohp via XMP and the CS SDK?  I was not able to extract this information from the Advanced Topics: Working with XMP Metadata chapter of the CS SDK documentation
    A real, and complete code example would be greatly appreciated over a pseudocode example.
    Thank you in advance.
    Steven Erat

    Ah ha.  Found the problem, thanks to Ian.  When I saw the inline help appear in Extension Builder for app.activeDocument.xmpMetadata, it indicated that the node as [Read Only], however, the leaf app.activeDocument.xmpMetadata.rawData is in fact not read only. I incorrectly assumed rawData was not writeable when in fact it is.

Maybe you are looking for

  • Writing non-latin Character to Log file from Java application

    Hi Everyone, I'm encountering a very strange localization issue. I'm executing the following code from a J2EE application (although the behavior is replicated exactly from a Java console application): File testFile = new File("D:\\Temp\\blah.txt"); t

  • Delete price on product attributes

    I added 2 attributes to a product and want to know how do I delete the pricing for the attributes, besides using us/00.  When left blank, BC calculates double the price for the singular item.  For example, attribute red + attribute sm = $40.00, while

  • Dynamic access to properties?

    suppose i have a class A with properties: "user", "group", and "siteName"; consider the following code: var test:A = new A(); var array:Array = new Array(); array.push("siteName"); array.push("user"); array.push("group"); is it possible to access the

  • New mac pro can't set-up

    just received my new mac pro and can't get it to work. on set-up after a few seconds i get a message need to restart and this goes on and on. what can be the problem. please help.paid big bucks. Thanks, mtools

  • While navigation down in one block screen is moving upwards in forms

    While navigation down in one block screen is moving upwards in forms 6i plz help anybody regarding this problem