Any handy client/server patterns?

Hi!
I'm building a client/server application that communicate using Serializable Objects.
For example, the application need to do request/response, waiting for the result.
This could be a request to store items, or to retreive a list of items.
The Server need to send messages to applications which will handle them right away, as they arrive.
This could be as simple as a displaying a message to the user of the application, or a message interpreted by the application itself.
I'm thinking of something "event driven", Publish/subscribe looking implementation.
One application should be able to respond to events originated from another application.
One of the problems is that the application cannot receive messages from the server while it is waiting for the result of a request/response.
Do you know of any patterns that cover this or somehting similar?
I can think of either some multiplexing scheme or separate threads/ network connections.
But as allways, its easier to reuse something allready working :)
- Flexibility over performance is prefered
- There will never (ehum) be more than 10 active users at a time
- The request/response messages scheme need not be very fast
- The "small" messages (events) must be handled almost instantly (one user sees changes made by another user)
- The size of the messages is small. Either a few lines of code (events, commands), or a dozen records (query results)
- The number of messages is small
/ Ronnie

The Model-View-Controller design pattern solves these problems by decoupling data access, business logic, and data presentation and user interaction.
A

Similar Messages

  • Client-Server office discussion. Need a pattern ?

    Hello all,
    1. We are new in network programming, so please forgive us for such a dum question.
    In our last project we were requested to write a very simple java server which would handle some "Task process" state by recieving commands "start,stop,getStatus".
    Although we were able to easily write the code, we had a doubt that created a team discussion.
    Were should the socket connection be stablished ?
    Some of us stated that the "Constructor" should establish the connection to the socket, as the "Server" can not exists if it is not listening to a port.
    Some others stated that a "Run/Start" method should do this.
    Obviouly either way works, yet I'm hopping that the Gurus here can help us determine the right answer.
    2. I read about MVC pattern but I can't find a link to a well explained "Client-Server" pattern. Does anyone know a good place to find patterns ?
    Thanks in advanced for you help !!!
    It's great to be part of this community.
    Thanks..

    Hello all,
    1. We are new in network programming, so please
    forgive us for such a dum question.
    In our last project we were requested to write a very
    simple java server which would handle some "Task
    process" state by recieving commands
    "start,stop,getStatus".
    Although we were able to easily write the code, we
    had a doubt that created a team discussion.
    Were should the socket connection be stablished ?
    Some of us stated that the "Constructor" should
    establish the connection to the socket, as the
    "Server" can not exists if it is not listening to a
    port.
    Some others stated that a "Run/Start" method should
    do this.
    Obviouly either way works, yet I'm hopping that the
    Gurus here can help us determine the right answer.
    Why not use a Servlet? That having been said, if I did want to re-invent the wheel, I would add startListening() and stopListening() methods to the class that manages the ServerSocket. You can always force a JVM exit, but why not at least provide methods for callers that want to end gracefully?
    2. I read about MVC pattern but I can't find a link
    to a well explained "Client-Server" pattern. Does
    anyone know a good place to find patterns ?
    Thanks in advanced for you help !!!
    It's great to be part of this community.
    Thanks..Do a Google search on writing a multi-threaded server. A number of patterns could apply. Client-server is really an architecture, not a pattern. Any number of patterns (or anti-patterns) could actually implement it.
    - Saish

  • Are there any Client/Server Application (using sockets) design patterns?

    Hi,
    The title of the post nearly says it all. I am searching for different design patterns related with the development of a client/server application. I understand that there must be any different ways on how a client/server application can be developed.
    Regards,
    Sim085
    Disclaimer:
    When I enter in the Socket forum on this site I recieve this message "Thank you for any participation in this forum. Due to a lack of relevant activity, we have decided to archive this forum on June 16, 2006. For future posts on this topic, we suggest you use the Networking forum" and I am not allowed to create a new post! However I can see posts done yesterday! All i did is add the forum in 'my forums'. Does this happen to you people as well?

    Hi Sim085...How are you?
    So look this:
    http://forum.java.sun.com/thread.jspa?threadID=5148926&tstart=75
    I don�t know if is what you want...but I hope in this^^
    Ok man...If you have one example for help you is better.
    [ ]

  • Client/server RMI app using Command pattern: return values and exceptions

    I'm developing a client/server java app via RMI. Actually I'm using the cajo framework overtop RMI (any cajo devs/users here?). Anyways, there is a lot of functionality the server needs to expose, all of which is split and encapsulated in manager-type classes that the server has access to. I get the feeling though that bad things will happen to me in my sleep if I just expose instances of the managers, and I really don't like the idea of writing 24682763845 methods that the server needs to individually expose, so instead I'm using the Command pattern (writing 24682763845 individual MyCommand classes is only slightly better). I haven't used the command pattern since school, so maybe I'm missing something, but I'm finding it to be messy. Here's the setup: I've got a public abstract Command which holds information about which user is attempting to execute the command, and when, and lots of public MyCommands extending Command, each with a mandatory execute() method which does the actual dirty work of talking to the model-functionality managers. The server has a command invoker executeCommand(Command cmd) which checks the authenticity of the user prior to executing the command.
    What I'm interested in is return values and exceptions. I'm not sure if these things really fit in with a true command pattern in general, but it sure would be nice to have return values and exceptions, even if only for the sake of error detection.
    First, return values. I'd like each Command to return a result, even if it's just boolean true if nothing went wrong, so in my Command class I have a private Object result with a protected setter, public getter. The idea is, in the execute() method, after doing what needs to be done, setResult(someResult) is called. The invoker on the server, after running acommand.execute() eventually returns acommand.getResult(), which of course is casted by the client into whatever it should be. I don't see a way to do this using generics though, because I don't see a way to have the invoker's return value as anything other than Object. Suggestions? All this means is, if the client were sending a GetUserCommand cmd I'd have to cast like User user = (User)server.executeCommand(cmd), or sending an AssignWidgetToGroup cmd I'd have to cast like Boolean result = (Boolean)server.executeCommand(cmd). I guess that's not too bad, but can this be done better?
    Second, exceptions. I can have the Command's execute() method throw Exception, and the server's invoker method can in turn throw that Exception. Problem is, with a try/catch on the client side, using RMI (or is this just a product of cajo?) ensures that any exception thrown by a remote method will come back as a java.lang.reflect.InvocationTargetException. So for example, if in MyCommand.execute() I throw new MySpecialException, the server's command invoker method will in turn throw the same exception, however the try/catch on the client side will catch InvocationTargetException e. If I do e.getCause().printStackTrace(), THERE be my precious MySpecialException. But how do I catch it? Can it be caught? Nested try/catch won't work, because I can't re-throw the cause of the original exception. For now, instead of throwing exceptions the server is simply returning null if things don't go as planned, meaning on the client side I would do something like if ((result = server.executeCommand(cmd)) == null) { /* deal with it */ } else { /* process result, continue normally */ }.
    So using the command pattern, although doing neat things for me like centralizing access to the server via one command-invoking method which avoids exposing a billion others, and making it easy to log who's running what and when, causes me null-checks, casting, and no obvious way of error-catching. I'd be grateful if anyone can share their thoughts/experiences on what I'm trying to do. I'll post some of my code tomorrow to give things more tangible perspective.

    First of all, thanks for taking the time to read, I know it's long.
    Secondly, pardon me, but I don't see how you've understood that I wasn't going to or didn't want to use exceptions, considering half my post is regarding how I can use exceptions in my situation. My love for exception handling transcends time and space, I assure you, that's why I made this thread.
    Also, you've essentially told me "use exceptions", "use exceptions", and "you can't really use exceptions". Having a nested try/catch anytime I want to catch the real exception does indeed sound terribly weak. Just so I'm on the same page though, how can I catch an exception, and throw the cause?
    try {
    catch (Exception e) {
         Throwable t = e.getCause();
         // now what?
    }Actually, nested try/catches everywhere is not happening, which means I'm probably going to ditch cajo unless there's some way to really throw the proper exception. I must say however that cajo has done everything I've needed up until now.
    Anyways, what I'd like to know is...what's really The Right Way (tm) of putting together this kind of client/server app? I've been thinking that perhaps RMI is not the way to go, and I'm wondering if I should be looking into more of a cross-language RPC solution. I definitely do want to neatly decouple the client from server, and the command pattern did seem to do that, but maybe it's not the best solution.
    Thanks again for your response, ejp, and as always any comments and/or suggestions would be greatly appreciated.

  • Design Pattern for multithreaded client server program

    I asked this question in another post, but with other stuff, so I'll distill this one.
    I am creating a multi-threaded client server program (just for learning - a chat program at this point). I built the server and client in swing, and I'm wondering what the best design pattern is for this setup. Right now all the swing stuff is in the MyServer class. In that class I have a loop accepting client connections to the serverSocket and creating a new MyServerThread (threaded client connection).
    The problem is that all the work of creating input streams, interacting with the server, all that stuff is done in the MyServerThread class, but I want that text to be written up to the Swing objects - which is in the MyServer class. So right now in the MyServerThread class I pass the MyServer object into it, but I'm not sure if that is really the most robust thing to do. Does anybody have any suggestions as to how this should be done. If somebody has an article they'd like to point to I'll check it out too. But if it's just the run-of-the-mill multithreaded client-server article, I've read alot and most don't specifically address my question.

    Thanks for the reply Kaj, and I think I'll keep my design for now, since it's just quick and dirty. I've read the MVC concept a while ago and I'll revisit it again when I get more serious. But I have a question, why should I be using a callback interface, why an interface at all? And then make MyServer implement that interface...why not just pass MyServer to the thread object? Or is there something down the line that I did not forsee?

  • Pro*C  using client server and the sqlca - any takers

    Hi all
    This is my 1st post and it's about Pro*C.
    At work, we are porting our Pro*C apps from VMS to XP/NT. Has anyone done this before, anything to be aware of?
    Also am planning a client/server architechture for my next project, but with Pro*c, and am concerned about the conficts of using the sqlca between child processes...any ideas/suggetions?

    Don't cross post
    [http://forums.sun.com/thread.jspa?threadID=5384591&messageID=10700568#10700568]

  • Re: Bloated clients (was: pattern for persistancemanagement)

    Geoff,
    From what I've understood of Forte's partitioning behaviour, the only way to get rid of b, c, d and e Projects from the client partition is by
    deploying them as a shared library and having the Client dynamically
    load them at run-time. Any other way, including creating a complex
    structure of interfaces to avoid the client referencing the other
    projects directly, or even deploying the Server projects as another
    Application, will not prevent these projects from being included in the
    Client Partition.
    The problem I guess is that when we think along the lines of components
    we immediately associate them with Service Objects. Clearly, it's the
    Project and not the SO which can be classified as a component in Forte.
    The questions I have is : Now that we know how Forte's Partioning
    mechanism works, would it significantly impact the way we partition our
    Apps ? I'm not so sure.
    Eric
    ----Original Message Follows----
    Date: Thu, 22 Oct 1998 14:52:29 -0400
    From: Geoff Puterbaugh <[email protected]>
    To: [email protected]
    Subject: Bloated clients (was: pattern for persistance management)
    Reply-To: Geoff Puterbaugh <[email protected]>
    This topic is of keen interest to me as well. At my customer's
    urging, I wrote a little test application spread across
    four or five projects, each supplying the next..
    a << b << c << d << e
    The projects b,c,d, and e each contain a class and a service
    object based on that class. I partitioned it (a client
    partition and four server partitions for b c d e) and made
    a distribution. Then I looked at the client partition
    and discovered b c d e were projects for it!
    If you code-generate this and run fcompile, you will see
    that all the code for all the projects in the entire chain
    of supplier projects winds up in the client partition.
    To be clear about this, if project e contains a class X,
    you will see the source code for X.init and all other
    X methods in the client partition.
    This appears to be the default behavior, and the open
    question is how to change the default behavior, if that
    can be done.
    All my best,
    Geoff
    P.S. If e uses GenericDBMS as a supplier, it will show up
    in the client too. Of course!
    This is at least my understanding as of today.
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
    Get Your Private, Free Email at http://www.hotmail.com
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    Geoff,
    From what I've understood of Forte's partitioning behaviour, the only way to get rid of b, c, d and e Projects from the client partition is by
    deploying them as a shared library and having the Client dynamically
    load them at run-time. Any other way, including creating a complex
    structure of interfaces to avoid the client referencing the other
    projects directly, or even deploying the Server projects as another
    Application, will not prevent these projects from being included in the
    Client Partition.
    The problem I guess is that when we think along the lines of components
    we immediately associate them with Service Objects. Clearly, it's the
    Project and not the SO which can be classified as a component in Forte.
    The questions I have is : Now that we know how Forte's Partioning
    mechanism works, would it significantly impact the way we partition our
    Apps ? I'm not so sure.
    Eric
    ----Original Message Follows----
    Date: Thu, 22 Oct 1998 14:52:29 -0400
    From: Geoff Puterbaugh <[email protected]>
    To: [email protected]
    Subject: Bloated clients (was: pattern for persistance management)
    Reply-To: Geoff Puterbaugh <[email protected]>
    This topic is of keen interest to me as well. At my customer's
    urging, I wrote a little test application spread across
    four or five projects, each supplying the next..
    a << b << c << d << e
    The projects b,c,d, and e each contain a class and a service
    object based on that class. I partitioned it (a client
    partition and four server partitions for b c d e) and made
    a distribution. Then I looked at the client partition
    and discovered b c d e were projects for it!
    If you code-generate this and run fcompile, you will see
    that all the code for all the projects in the entire chain
    of supplier projects winds up in the client partition.
    To be clear about this, if project e contains a class X,
    you will see the source code for X.init and all other
    X methods in the client partition.
    This appears to be the default behavior, and the open
    question is how to change the default behavior, if that
    can be done.
    All my best,
    Geoff
    P.S. If e uses GenericDBMS as a supplier, it will show up
    in the client too. Of course!
    This is at least my understanding as of today.
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>
    Get Your Private, Free Email at http://www.hotmail.com
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • Client Server Authentication

    Hello Coders,
    I've written a simple multi threaded client server application. I'm having a bit of a problem developing the application and continually run into a brick wall. The major problem/s I have
    1. Is to get the client to register its IP address as a valid user along with the name of the user in order to join the service. I guess am try to implement logon/logoff etc.
    2. The application is an online library service.......what "Do I need to check on to" be able to store a number of books and serve and implement requests from the clients?
    I tried using the power of the web with no luck and failed to gained worthwhile educative direction. I kindly ask for your assistance. Thanks
    By the way, I'm user ServerSocket and don't have any Graphical User Interface implemented

    >
    1. Is to get the client to register its IP address as a valid user along with the name of the user in order to join the service. I guess am try to implement logon/logoff etc.
    >
    I'd recommend username/password, because the user should be able to login from another client, shouldn't he?
    >
    2. The application is an online library service.......what "Do I need to check on to" be able to store a number of books and serve and implement requests from the clients?
    >
    You have to think about the communication between server and client. This could be everything,... This could be a standard like JMS or even HTTP. You also could, as I recommend for educational purpose, write your own 'protocol'. You could implement it with simple Readers in Writers, as you find in the java.io package. Back in my apprenticeship, our little chat system was using Object In- and OutputStreams.
    If you have your technology for your protocol, you have to define it. If you use readers and writers, client could send something like "login username password" and the answer would be "login granted" or "login denied". Or using Object Streams you could send an object like "LoginIn" which holds user/pass and send back a LoginOut which holds something like a loginAccepted:boolean flag.
    To store data in a backend, you should check the DAO pattern: http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html. You can store data in files as serialized objects, xml, etc. Or in a database, such as MySQL -> In this case, you should check sun's jdbc developer guide http://java.sun.com/javase/6/docs/technotes/guides/jdbc/ and hibernate (http://www.hibernate.org).
    hope this helped...
    regards
    slowfly

  • Client/Server to Web-Based application Conversion

    Hi! Everyone,
    I have couple of questions for you guys.
    Our Client had recently upgraded Forms 4.5 to 6i to move from Client/Server based application to Web based application.
    They are using Forms Server 6i Patch Set 1, OAS 4.0.8.1, Windows NT Service Pack 5 and Oracle 7.3. They are facing the following error every now and then, when they run the forms,
    "FRM-92100: Your connection to the server was interrupted. This may be the result of a network error or a failure on the server.You will need to re-establish your session."
    Please let me know what might be causing the above error. The only problem i can think about might be Oracle 7.3. If i am right only Oracle 8 and above supports Forms 6i.
    Can anyone let me know some tips and/or techniques to upgrade Forms 4.5 to 6i. If there are any important settings/steps which we might have over looked during the upgrade, please list them.
    Any kind of help is greatly appreciated.
    Thanks,
    Jeevan Kallem
    [email protected]

    Most of the code is use with no changes at all.
    See otn.oracle.com/formsupgrade
    Regards
    Grant Ronald

  • Client/server program validation - is it possible?

    I've been mulling over this problem for a few days, and am starting to wonder if it's theoretically possible to find a solution. I'm not looking for specific code, this probably won't even be implemented in Java, I'm just wondering if there is a theoretical program model that would work in this situation.
    The short version:
    Validate the data generated by a client program, without knowing the original data.
    The long version:
    This is a "profiling" system for a MMOG (Massively Multiplayer Online Game). The MMOG is an internet based client/server graphical program where each client connects to the server and they interact with each other and the virtual world. They pay a monthly fee for access to the game. My program is not affiliated with the MMOG or its makers. I have no connections inside the company and cannot expect any cooperation from them.
    The "profiling" system is also a client/server model. The client program runs in the background while the MMOG client is active. It accesses the memory of the MMOG client to retrieve information about the player's character. Then, possibly on request or maybe immediately, it sends the character data to our server.
    What I want to validate is that the character data being sent is unmodified and actually comes from the MMOG program.
    I can reasonably expect that with mild encryption and some sort of checksum or digest, the vast majority of problems can be avoided. However, I am not sure it's possible to completely secure the system.
    I assume that the user has access to and knowledge of the profiler client and the MMOG client, their assembly code, and the ability to modify them or create new programs, leveraging that knowledge. I also assume that the user does not have access to or knowledge of either of the server applications - the MMOG server or mine.
    In a worst-case scenario, there are several ways they could circumvent any security I have yet been able to think of. For instance, they could set up a fake MMOG client that had the data they wanted in memory, and let the profiler access that instead of the real thing. Or, they could rewrite the profiler to use the data they wanted and still encrypt it using whatever format I had specified.
    I have been considering using some kind of buffer overflow vulnerability or remote execution technique that would allow me to run specific parts of the client program on command, or get information by request, something that could not be anticipated prior to execution and thus could not be faked. But this seems not only insecure for the client but also not quite solid enough, depending on how it was implemented.
    Perhaps a series of apparently random validation codes, where the client does not know which one actually is doing the validation, so it must honor them all. Again, this is very conceptual and I'm sure that I'm not explaining them very well. I'm open to ideas.
    If I don't come up with anything better, I would consider relying on human error and the fact that the user will not know, at first, the relevance of some of the data being passed between client and server. In this case, I would include some kind of "security handshake" that looks like garbage to the client but actually is validated on the server end. A modified program or data file would result in an invalid handshake, alerting the server (and me) that this client was a potential problem. The client would have no idea anything had gone wrong, because they would not know what data the server was expecting to receive.
    I hope I have not confused anyone too much. I know I've confused myself....

    Yes, that is the general model for all MMOGs these days - no data that can actually affect the game is safe if loaded from the client's computer. All character and world data is sent from server to client and stored in memory. Any information that is saved to the client's computer is for reference only and not used by the game engine to determine the results of actions/events etc.
    My program accesses the MMOG client's memory while the game is running, and takes the character information from there. It does not have direct access to the MMOG server, and does not attempt to modify the data or the memory. Instead, it just encrypts it and sends it to our server, where the information is loaded into a database.
    The security issue comes into play because our database is used for ranking purposes, and if someone were to hack my program, they could send invalid data to our servers and affect the rankings unfairly.
    I'm just trying to think of a way to prevent that from happening.

  • VPN Site-to-Site or VPN Client Server with Cisco IP Phone 8941 and 8945

    Hi everyone,
    I decide to deploy a CUCM (BE6K platform), SX20, and IP Phone 8941/8945 on Head Office and Cisco SX10 and IP Phone 8941/8945 for branch offices (actually 9 branch offices).
    The connection will use internet connection for HO and each branch offices.
    And the IT guy want to use kind a VPN client server or VPN site-to-site for the connection through internet,
    what kind of VPN client server or VPN site-to-site that recommended for this deployment?
    and what type of Cisco router that support that kind of VPN (the cheapest one will be great)?
    So the SX10 and IP Phone 8941/8945 in branch offices can work properly through internet connection?
    please advise
    Regards,
    Ovindo

    Hi Leo,
    technically, the ipsec users will not use up any premium license seats, so if you have 10 ipsec users connecting first, the premium seats are still free and so you can then still have 10 phones/anyconnect users connect.
    However, the 250 you mention is the global platform limit, so it refers to the sum of premium and non-premium connections. Or in other words, you can have 240 ipsec users and 10 phones,  but not 250 ipsec users and 10 phones.
    If 250 ipsec users and 10 phones would try to connect, it would be first-in, first-served, e.g. you could have 248 ipsec users and 2 phones connected.
    Note: since you have Essentials disabled I'm assuming you are referring to the legacy "Cisco vpnclient" (IKEv1 client) which does not require any license on the ASA. But for the benefit of others reading this thread: if  you do have Anyconnect clients (using SSL or IPsec/IKEv2) for which you currently have an Essentials license, then note that the Essentials and Premium license cannot co-exist. So for e.g. 240 Anyconnect users and no phones, you can use Essentials. For 240 Anyconnect users and 10 phones, you need a 250-seat Premium license (and a vpn phone license).
    hth
    Herbert

  • Client-Server - SOA.... Is it really a transition or a big development  ?

    Hi,
    In all sources related to SOA/ESA by SAP, it is said that, transitioning from Client-Server Arch(CSA) to SOA is the same as transitioning from Mainframe systems to Client-Server Arch.
    If we think about Mainframe and CSA, it is obvious that there had been big differences in that transition. Such as, the INTELLIGENT CLIENT concept had appeared to replace the DUMMY CLIENTS, so this had changed the way of IT Business. There would be a main application providing several functionalities(server) and other applications which want to use those functionalities (clients) would connect to the server using some functionalities on its own (that means a client appliction should also have some functionalities in order to at least connect to the server, so that made them different from the DUMMY clients of the mainframe era)
    Now, when I look at the differences between SOA and CSA, I cannot see that incompareble differences.Why ? Let me explain :
    - One of the most important differences between SOA and CSA is, SOA is vendor and platform independent, so that any application can call any applications functionality as long as they are using Web Services. That is true. But the question arises here : It is still the case that someone is calling some others' functionalities (services), so there is still a client/server mentality, isn't there and We will still be using several client/server programming languages in order to realize the main functionality of the web services but this will be transparent to the user and the integration. The main difference is, SOA is vendor and platform independent. But I don't think this can be commented as a missing feature of CSA. Because the aim of CSA was to make the clients more intelligent and not to make them vendor/platform independent. And also architectures like CORBA and DCOM have also tried to achieve that independency (even though they have restrictions compared to Web Services, one of the main reasons for this is using Web as a transport/communication protocol) but they are still treated as some extensions on top of CSA because they are using CSA beneath. But if we compare Mainframes and CSA, even though I haven't seen manframe ages, I think it is clear that CSA does not use any architectural functionality of Mainframes. They are completely different.. But is SOA and CSA completely different ?
    I agree with all reasons why today business needs sth more agile, more flexible and it is becoming clearer day by day that SOA and Web Services provides this environment, BUT, I still cannot make it clear, WHY it is accepted as a transition from CSA and why it is not treated as a big development over CSA while using the main features of it.
    Any comments will be appreciated.
    Regards
    Ahmet Engin Tekin

    Good point..Actually those are the things clearly known but it becomes a bit confusing to build clear sentences when it comes to declare the differences. Anyway, here are my additions :
    - Mainframes were centralized systems which had their own hardware architecture as well. All processes/applications were running on 1 central DB/system and everyone in the company had to use the same functionality and interface.
    - In time, as a result of business demand, people needed different functionalities/applications regarding different business needs. This could either be done by extending the higly-costed big mainframe systems/softwares OR a new approach had to be developed in order to solve those problems. At this point, (thanks to IBM,Macintosh and Xerox) PC and ethernet concepts had emerged. That was a completely different hardware architecture which allowed less costly systems and also distributing the process load and/or applications to different systems in one landscape (app servers, intelligent clients - 2 tier, 3- tier arch.). Thus, while those were happening on harware side, new communication and programming models/languages emerged on software side. As a result, people started using different applications on different systems according to their needs and thus an efficient solution had been provided to the business need (described above).
    To criticise, this was really a big transition. Not only software concepts but also hardware concepts are also changed drastically. Actually, it is not wrong if we say, developments on the hardware side, allowed changes on the software side
    - What happened next ? Companies started using so many different applications by different vendors with different business logic and programming models (thanks to CSA). But in times, this has emerged the biggest problem of the CSA era : Integration.
    We all know the rest. "Web Services" concept emerged with SOA as well. So that, the boundaries between the systems began to disappear.
    So, is this a transition ? Well, yes it is.. The point that made it confusing (at least for me) is that this time there is no hardware transition (yet) but only a transition in software side. But I still insist that the IT transition during Mainframe->CSA was like a revolution (forget what you've left behind) but from CSA to SOA; it is more likely to be an evolution (the next best thing)
    Anyone have more comments ?
    Regards,
    Ahmet

  • Error deploying a composite to a clients server

    Hi,
    I'm having trouble deploying a composite to a clients server.
    I've defined the Configuration Plan to change all the references from our server to the clients server.
    The composite has some references to webservices deployed on the same server. I can test those webservices on the Enterprise Manager and they work.
    The error when I try to deploy is the following:
    Deploying on partition "default" of "/Farm_bpm_domain/bpm_domain/soa_server1" ...
    Deploying on "/Farm_bpm_domain/bpm_domain/soa_server1" failed!
    Error during deployment: Deployment Failed: Error occurred during deployment of component: ServiceTest2Process to service engine: implementation.bpmn for composite: ServiceTest2Composite: ORABPEL-05250
    Error deploying BPMN suitcase.
    error while attempting to deploy the BPMN component file "/oracle/product/fmw/11.1.1/bpm/user_projects/domains/bpm_domain/deployed-composites/ServiceTest2Composite_rev1.0/sca_ServiceTest2Composite_rev1.0/soa_68135a9a-c6b0-4982-99de-2eb366875b5d"; the exception reported is: java.lang.IllegalArgumentException: Conversation is not properly defined. There are not operation/process or external services defined
    This error contained an exception thrown by the underlying deployment module.
    Verify the exception trace in the log (with logging level set to debug mode).
    .The logs on the server (set to TRACE:32 (FINEST)) don't add anything to the error message.
    Anyone has had the same problem or has any ideia what might be the problem?
    Thanks in advance,
    Diogo Henriques

    Hi
    Can't offer much help but I just got exactly the same problem also. I just made a minor modification to a simple BPMN Test process. The change involved adding a Script Task and changing the assignment to the Output Argument of a Sub-Process. This change should not have caused any change to the service interface of the process. This was on a local Dev box.
    The process does call a Web Service. It was deploying/executing without error at last WLS boot a day ago, the Web Service is running fine and the process is building without error. There have been no other changes.
    This seems to be some kind of deployment versioning or stale caching related bug. I just undeployed the current version via EM (which actually reported a failure during undeployment but undeployed anyway!) and rebooted WLS and the deployment was then successful.
    See also Error deploying 2 processes in the same project BPM 11gR3 Project
    I suspect both of these are symptoms of the the same underlying problem which show up when there are repeated deployments of the same process after changes - regardless of whether you overwrite the existing version or start a new one.
    Regards
    Jim Nicolson

  • Thumbnail images in Forms6 client/server

    Hello,
    Some help would be greatly appreciated on this matter. I would like to be able to display a thumbnail image of a picture on the web in an oracle, NON-WEB enabled form.
    For example, when I open a form dealing with product details, I would like a piece of magic to retrieve a thumbnail image of the product from somewhere on the web, and display it on the form. Please note, in my situation it is not viable to store a scaled down version of the image int he database. The image must be located somewhere on the web.
    Some research into this has pointed me to OLE, but I can't seem to find anythng relating OLE to images in forms.
    Any ideas?
    - A Developer Scorned.

    Denis,
    I followed the instructions in the link you gave (how to put animated icons in forms in which you instructed how to use an activeX control to display images in client/server forms.
    I would like to thank you as it works beutifully, however there is one more question - Is there a way to get to image to scale or 'fit' to the size of the activeX control on the form
    - A Developer Scorned.

  • Best practice for client-server(Socket) application

    I want to build a client-server application
    1) On startup.. client creates connection to Server and keeps reading data from server
    2) Server keeps on sending different messages
    3) Based on messages(Async) from server client view has to be changed
    I tried different cases ended up facing IllegalStateChangeException while updating GUI
    So what is the best way to do this?
    Please give a working example .
    Thanks,
    Vijay
    Edited by: 844427 on Jan 12, 2012 12:15 AM
    Edited by: 844427 on Jan 12, 2012 12:16 AM

    Hi EJP,
    Thanks for the suggestion ,
    Here is sample code :
    public class Lobby implements LobbyModelsChangeListener{
        Stage stage;
        ListView<String> listView;
        ObservableList ol;
         public Lobby(Stage primaryStage) {
            stage = primaryStage;
               ProxyServer.startReadFromServer();//Connects to Socket Server
             ProxyServer.addLobbyModelChangeListener(this);//So that any data from server is fetched to Lobby
            init();
        private void init() {
              ProxyServer.getLobbyList();//Send
            ol = FXCollections.observableArrayList(
              "Loading Data..."
            ol.addListener(new ListChangeListener(){
                @Override
                public void onChanged(Change change) {
                    listView.setItems(ol);
         Group root = new Group();
        stage.setScene(new Scene(root));
         listView = new ListView<String>();
        listView.maxWidth(stage.getWidth());
         listView.setItems(ol);
         listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
        istView.setOnMouseClicked(new EventHandler<MouseEvent>(){
                @Override
                public void handle(MouseEvent t) {
    //                ListView lv = (ListView) t.getSource();
                    new NewPage(stage);
         root.getChildren().add(listView);
         @Override
        public void updateLobby(LobbyListModel[] changes) {
    //        listView.getItems().clear();
            String[] ar = new String[changes.length];
            for(int i=0;i<changes.length;i++)
                if(changes!=null)
    System.out.println(changes[i].getName());
    ar[i] = changes[i].getName();
    ol.addAll(ar);
    ProxyServer.javaProxyServer
    //Implements runnable
    public void run()
         ......//code to read data from server
    //make array of LobbyListModel[] ltm based on data from server
         fireLobbyModelChangeEvent(ltm);
    void addLobbyModelChangeListener(LobbyModelsChangeListener aThis) {
    this.lobbyModelsChangeListener = aThis;
         private void fireLobbyModelChangeEvent(LobbyListModel[] changes) {
    LobbyModelsChangeListener listner
    = (LobbyModelsChangeListener) lobbyModelsChangeListener;
    listner.updateLobby(changes);
    Exception :
    java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-5
             at line         ol.addAll(ar);
    But ListView is getting updated with new data...so not sure if its right way to proceed...
    Thanks,
    Vijay                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

Maybe you are looking for

  • Error message in a table (not ALV)

    Hi there, i know that in ALV an error-message appears and the cell is marked if an user puts a not allowed value in the cell. Now i want to achieve the same in my non-alv-table. If a user enters a value in a specific cell, i want to output a message

  • How to populate a dynamic table according to the choice of the viewer

    Hi there, I ran into a dead-end on my  "Events" page. There is a dynamic table getting the info from a database. It will initially show the Upcoming Events. At this point my question is this: *Can I populate the dynamic table based on a condition whe

  • OAS 4.0.8.1 - Some issues

    1) Is connection pooling possible in OAS 4.0.8.1 ? 2) Can JDBC 2.0 drivers be used with OAS 4.0.8.1 . If yes , can we register the datasource in the JNDI namespace ? How ? null

  • Problems to configure db2e in a mi client .cab

    Hi, Our customer has a MI Client installer (CAB) customized and he has requested to put DB2e in it. I guess I´m in the right way, put i´m facing a problem. When the MI initialize, the DB2e standard tables aren´t created. It seems that some DB2e scrip

  • JDBC DRIVER LINUX TOMCAT APACHE

    Hello all I am woking on APACHE + TOMCAT + RH LINUX enviorment . I have a main page which calls another JSP on clicking to a button . That JSP makes connection with oracle 7.3.4 which is running on another machine whose enviorment is AIX 4.2 . whenev