WOAdaptor on AIX
Hi All, Has anybody done any deployments on AIX lately? We are looking at possibly moving over to that since the company here has a fleet of AIX systems admins and very little on the linux side. I haven't heard much about AIX in many years, I would guess the only problem I might hit would be the apache adaptor compiling and running okay. Thanks, - Mike DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
WO 5.3.3 / SQL-Server and primary key generation
Hi All, I have a legacy 5.3.3 application that we need to scale up to multiple instances. It is a pretty big, old and fragile code base - wonderizing it does not seem to be an option. I reviewed the code and the use cases are separate enough that there is no need for full inter-app EO change notifications - except for primary key generation. On the primary key generation, I noticed that the SQL being generated is like the below and was thinking that with that UPDLOCK and ROWLOCK on the EO_PK_TABLE, that it might 'just work'. However, in testing, I was able to get cases where different application instances were colliding on trying to use the same primary key value. [2012-01-07 12:29:35 EST] WorkerThread44 evaluateExpression: com.webobjects.jdbcadaptor.MicrosoftPlugIn$MicrosoftExpression: SELECT PK FROM EO_PK_TABLE WITH (UPDLOCK,ROWLOCK) WHERE NAME = 'PROVIDER_USER' [2012-01-07 12:29:35 EST] WorkerThread44 evaluateExpression: com.webobjects.jdbcadaptor.MicrosoftPlugIn$MicrosoftExpression: UPDATE EO_PK_TABLE SET PK = 2532643 WHERE NAME = 'PROVIDER_USER' AND PK = 2532642 I am unsure how to proceed and was hoping somebody might be able to give me some pointers. #1. Should that SQL above be okay and doing the right thing? Maybe we just have something set wrong on SQL-Server and it is ignoring the locks? #2. Otherwise - I am thinking my best bet is to override the hook in EOF for primary key generation. Thanks, - Mike DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: WO 5.3.3 / SQL-Server and primary key generation
Hey thanks, this helps - another idea anyway. I was wondering about deadlocks too the way the it runs now. We are on SQL-Server 2005, not sure if that matters. I will look at XLOCK tomorrow. I'm not sure where the plugin we have came from, but luckily all the source code for it is in with the project itself so tweaking that might be an option. - Mike On Jan 11, 2012, at 5:48 PM, Peter Vandoros wrote: Hi Mike, I had a similar problem a long time ago in a configuration like yours. The difference was that I was getting dead locking transactions being detected by SQL server. I resolved it by changing the SQL to use an XLOCK instead - via my custom ms SQL JDBC hint plugin. Hope that helps! Regards, Peter On 12/01/2012, at 7:04 AM, Michael DeMan webobje...@deman.com wrote: Hi All, I have a legacy 5.3.3 application that we need to scale up to multiple instances. It is a pretty big, old and fragile code base - wonderizing it does not seem to be an option. I reviewed the code and the use cases are separate enough that there is no need for full inter-app EO change notifications - except for primary key generation. On the primary key generation, I noticed that the SQL being generated is like the below and was thinking that with that UPDLOCK and ROWLOCK on the EO_PK_TABLE, that it might 'just work'. However, in testing, I was able to get cases where different application instances were colliding on trying to use the same primary key value. [2012-01-07 12:29:35 EST] WorkerThread44 evaluateExpression: com.webobjects.jdbcadaptor.MicrosoftPlugIn$MicrosoftExpression: SELECT PK FROM EO_PK_TABLE WITH (UPDLOCK,ROWLOCK) WHERE NAME = 'PROVIDER_USER' [2012-01-07 12:29:35 EST] WorkerThread44 evaluateExpression: com.webobjects.jdbcadaptor.MicrosoftPlugIn$MicrosoftExpression: UPDATE EO_PK_TABLE SET PK = 2532643 WHERE NAME = 'PROVIDER_USER' AND PK = 2532642 I am unsure how to proceed and was hoping somebody might be able to give me some pointers. #1. Should that SQL above be okay and doing the right thing? Maybe we just have something set wrong on SQL-Server and it is ignoring the locks? #2. Otherwise - I am thinking my best bet is to override the hook in EOF for primary key generation. Thanks, - Mike DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/peter.vandoros%40gmail.com This email sent to peter.vando...@gmail.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Best type of machine
I have also have managed vmware on Dell PowerEdges for quite a few years. All AMD instead of Xeon, but nonetheless they work well. HP would work fine as well. With the larger name brand vendors like this vmware is somewhat 'hardware aware' and can collect data like temperature, power supply status, etc directly from the hardware and provide alerts and such, which is convenient. Whether you use vmware, Xen or something else - disk I/O can frequently be a bottleneck with virtualized environments, so make sure you get one of the better RAID controllers so you have fast disk I/O and you are much better off with many smaller sized disks than a few large disks. - mike On Dec 22, 2011, at 8:52 AM, Pascal Robert wrote: I have good experiences with Dell PowerEdge servers. Didn't use any new Dell since 2009, but manage 10 of them between 2002 and 2009, and not much problems. Make sure you have Xeon for the processors. Thanks for that.. But I meant an actual machine which could be used to operate Virtualized space.. Gino On 22 Dec 2011, at 15:47, Petite Abeille wrote: On Dec 22, 2011, at 4:44 PM, Gino Pacitti wrote: What sort of machine would be best to buy to use for Linux Virtualization? Linode? http://www.linode.com/why.cfm ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/ginokris%40me.com This email sent to ginok...@me.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/probert%40macti.ca This email sent to prob...@macti.ca ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
UTF8 and SQL-Server 2005/2008
Hi, We are updating some apps to be UTF8 enabled. I have done this kind of work in the past with Oracle and MySQL, but never with SQL-Server. I spent a couple hours earlier today googling around and realized that there are a few oddities doing this with SQL-Server. Starting with the fact that it does not natively support UTF8 encoding for char/varchar columns? I also saw some older WebObjects related posts about lack of support for nchar, nvarchar and such as well - although possibly they are obsolete? We seem to have things running okay with FrontBase for our workstation dev environments, but our corporate deployment environment is SQL-Server 2005. My next step is to migrate the apps over to our dev SQL-Server 2005 environment. Before I pour too many hours into that I was wondering if there are any tips tricks I should be aware of with WebObjects + SQL-Server and UTF8. Thanks, - Mike DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: More advice please about WO project..
I would think you have a few options here. #1. Sounds overall the problem is with apache, not the application itself. Even in older 1.3 apache, there are configuration parameters you can set to provide a limit to the maximum number of children spawned. However, the source of the problem is the fact that there are so many being spawned already. Maybe check the apache logs and see if you are either getting a much higher volume of valid requests coming in then your customer had before, or you are just getting hammered by some kind of low end denial of service attack or even dumb things like google/webcrawlers? #1A. One option would be to move to a more traditional multi tier architecture - basically move the apache server over to a FreeBSD or Linux box, with Apache 2.2.x and the WebObjects adaptor included. Nice thing about this is that it is generally a more robust solution anyway, and also helps you separate out where the problems are. The above is presuming the web server and the WebObjects application are both being run on the same server. #2 In regards to the code base itself, you said you had an older Mac around. If you can install 10.4 on that, along with the appropriate xCode developer toolset that still had WebObjects support, you should do that and ensure you can open the project up. You then have basic verification that the project files you received are fit and sound. From there, you can use some older scripts (I have local copies around somewhere) that help convert WebObjects apps from xCode to Eclipse and after that, once you are up and running in a modern Eclipse based development environment for WebObjects you can move forward in that way. I would recommend that you suggest to your client that you do this as part of helping them out no matter what. I just started on a contract a few months ago where nobody made the jump to Eclipse and were using vi/vim for editing, etc and were freaked out about inability to be able to maintain their existing code base. For the above, on that 10.4 install + xCode, you will also need to install the additional WebObjects stuff from the Developer package since it does not install by default. The above is not a 100% guaranteed solution, just some pointers - my 2-cents as it were. - Mike On Jun 16, 2011, at 3:14 PM, P Teeson wrote: The overseas organisation that contacted me is having a problem with their WO app. It is running on a Dual 500 MHz PPC G4 with 1GB RAM and running Tiger Server 10.4.11. The backend DB is under Oracle on a Sun server. The current problem is that the httpd root task gets into a situation where it keeps spawning www tasks. It initially starts of with 5 of them. At some point in time there are a multitude of them and the system slows down to the point of having to be re-booted. I have now received the source code for the WO app. It turns out to be an Xcode project. My present environment is Snow Leopard 10.6.7 and Xcode 3.2.6 on an Intel Mac Pro (2009 Nehalem 2xQuad Core) etc. Leopard was last the OS X version where Apple provided WO support. I do have Leopard 10.5.8 as a bootable partition. Also Xcode is installed and I can install whatever WO stuff is needed from the dvd. I have also DL'd WO 5.4.3 but not installed it yet. I also have available a G4 PPC 867MHz machine which I can setup as a web server if this is needed. (It runs Tiger 10.4.11 but not Server version. Server is available to me and I can setup a separate partition as a test environment) Browsing around in the Xcode project I see a folder named GCRI.eomodeld containing a lot of .fspec and .plist files. Then a whole bunch of other folders containing .java source files. And a folder named Web Components containing other folders in which are .api, .wo, .html, .wod, and .woo files. Finally there is a single target named GCRI made up of two sub targets named Application Server and Web Server Please advise me as to the best debugging path to follow to diagnose the spawning issue. Thanks for your advice and respect Peter ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Use EOF without WO?
Hi Amy, ManagedObjectContext on iOS is a similar, but different animal than EOEditingContext on server-side java. At the end of the day, EOF is most likely the reason that WebObjects was never completely open sourced some years after NeXT got Apple back and it no longer was even remotely any kind of significant revenue stream. Hence from there however, the technology was leveraged by Apple into iOS. I would expect that Apple considers CoreData a competitive advantage for the iOS platform, and given its history from EOF, and just being done right in the first place, completely makes sense. I also imagine at some point there will be similar developer frameworks for Android but most likely they will be a few years out and probably still less elegant given the mindset I have seen from Google frameworks like GWT and such. Just my 2-cents. - Mike On Jun 15, 2011, at 9:23 AM, Amy Worrall wrote: On Wed, Jun 15, 2011 at 3:32 PM, Jesse Tayler jtay...@oeinc.com wrote: what is it really that you need to be removed? you don't want to use the monitor and load balance or taskd stuff? or you can't install something in some environment? Thanks guys! This is the point I confess I'm trying to do something a little crazy… I work for an iOS development house and we've been asked to do an Android port of an app. My boss tasked us with finding the closest thing to Core Data that will run on Android. What's similar to Core Data and written in Java? Hmmm… It might come to nothing: it might end up being easier just rewriting it with a simpler Java ORM instead. But as I've been wanting to spend more time learning WebObjects anyway, I thought it couldn't hurt to see if this was possible. Amy ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: WOGWT adaptor
Yeah, I agree that the below e-mail was good. I have a question on this, and please pardon if I sound somewhat cranky again, but in regards to GWT... I can see the light at the end of the tunnel to be able to velocity generate the XML beans to get to GWT from both EOF and Cayenne3.1 (w/GUIDs). From there, just go back 10 years or so to where WO was before other things became more important for the founders/funders of EOF/WO - and the logical was to be able to slide a subset of an EOEditingContext graph of objects back and forth between the client and the server. It would at minimum require at least some kind of authentication delegate to avoid the inevitable troublesome/creative person that might just tweak the client to do unexpected things? From there, is there any reason plug-in wise, that for eclipse it would not be possible take those beans 'lightweight / transitory EOs' and be able to wire them up graphically? Basically I guess finish up where WODisplayGroup left us all hanging? I have been slow on responding on some of this because a lot of the work I've done over the last ten years has been more back end side of things. I backpedaled and got worried I jumped the gun thinking that it was truly necessary to write so many tedious lines of code just to make something show up and be responsive/intuitive to the end user in a browser based application. I do not want to sound like I'm stuck on GWT - but being able to write normal java code and have it compile to javascript for the client seems to me like a true blessing. The problem is that the APIs are so primitive still? Its like 'oh, we can do a table in the client - as long as all the rows are primitive types and ideally on the back end in a single table'. And, 'oh yeah, its easy, just write all this incredibly tedious and repetitive code for every single scenario that the client side might need to support for your APIs back to the server- and do it three times'. My thoughts are to extend GWT to be a more full fledged client. That has understandings of things like having a graph of objects, and when modifications are made posting the changes simultaneous both in the client and also back to the server so the server-side EOEditingContext can keep up, etc. Is this just a dumb idea because I have been so far away from doing client (as in humans) interface work for so long and am just ignorant of advances that have been made? Presuming that the state of affairs for being able to rapidly wire up client-side interfaces to server-side business logic (yes, I 100% understand it is not that simple) - what do other folks think is the way to go? Thanks for any feedback, and also my apologies (one more time) if I a just an ignoramus about how tedious it seems to be to build modern 'within the browser' client side apps, - Mike On May 24, 2011, at 6:05 AM, Kieran Kelleher wrote: Great illustration! I am speechless! On May 24, 2011, at 8:32 AM, David Avendasora wrote: Hi Mike, On May 23, 2011, at 8:17 PM, Michael DeMan wrote: Yes, I know. The problem is more related to staffing in regards to full time junior software developers and such. Basically, because of the tiny market share WO has, a lot of younger folks perceive it (correctly) as some kind of oddball technology. While it is uncommon, I wouldn't call it oddball. I would call it a secret weapon, and one that uses many of the exact same concepts as iOS, so developing end-to-end enterprise mobile solutions is much, much easier. Find someone with Java experience and interest in iOS and you've got yourself a ready-to-train WebObjects developer. With a mobile workplace, even kids straight out of college are concerned about what their resume will look like after 3-5 years on a full time job. Those crazy kids. You don't need a resume when people are constantly calling you and offering you jobs! Do they get on the most crowded bus too? Love driving only during rush hour? Pick the longest line in the grocery store? Being a WebObjects developer is like having the HOV lanes open just for your Maserati and having your groceries magically appear in your refrigerator. Sure, you've still got to cook some, but you didn't have to battle half the people in town to get home to dinner.* Dave *Yes, you have to properly configure your Maserati for driving on two-lane roads as opposed to parking lots, and you have to tell the refrigerator what types of food it should accept, but luckily, There's A Property For That™ (TAPFT trademark, 2010 Kieran Kelleher) ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/kelleherk%40gmail.com This email sent to kelleh...@gmail.com
Re: WOGWT adaptor
Okay, I will investigate this. Thanks! Yes - I have worked with the Project Wonder Ajax stuff before, but again the company is looking to utilize more broadly accepted technologies where they can, and had pretty much already selected GWT already. - mike On May 26, 2011, at 7:16 AM, John Huss wrote: In GWT, RequestFactory is the way of doing this. It allows you to transfer an object graph to the client and only sends deltas back to the server when things are changed. It doesn't have push notifications to automatically propagate changes from the server to the clients, but you could implement it fairly simply I think since WO already generates the notification, you just have to have the hanging request waiting and then resend the data as the response. GWT has a piece called the Editor framework which is sort of like a WODisplayGroup - it does data binding to the data objects. So the main point is that GWT basically has what you need. However, there aren't examples for using WO with it yet. But Google IO just finished and I think there was a lot of sample code that came out of IO that should help to with understanding RequestFactory and the Editors. Also, if you're not familiar with the Ajax framework in Project Wonder you should look at that first. It allows you to continue developing in the WO way and still get some more dynamic, fancy UIs. It's more of a middle ground between WO and GWT. John On Thu, May 26, 2011 at 5:12 AM, Michael DeMan webobje...@deman.com wrote: Yeah, I agree that the below e-mail was good. I have a question on this, and please pardon if I sound somewhat cranky again, but in regards to GWT... I can see the light at the end of the tunnel to be able to velocity generate the XML beans to get to GWT from both EOF and Cayenne3.1 (w/GUIDs). From there, just go back 10 years or so to where WO was before other things became more important for the founders/funders of EOF/WO - and the logical was to be able to slide a subset of an EOEditingContext graph of objects back and forth between the client and the server. It would at minimum require at least some kind of authentication delegate to avoid the inevitable troublesome/creative person that might just tweak the client to do unexpected things? From there, is there any reason plug-in wise, that for eclipse it would not be possible take those beans 'lightweight / transitory EOs' and be able to wire them up graphically? Basically I guess finish up where WODisplayGroup left us all hanging? I have been slow on responding on some of this because a lot of the work I've done over the last ten years has been more back end side of things. I backpedaled and got worried I jumped the gun thinking that it was truly necessary to write so many tedious lines of code just to make something show up and be responsive/intuitive to the end user in a browser based application. I do not want to sound like I'm stuck on GWT - but being able to write normal java code and have it compile to javascript for the client seems to me like a true blessing. The problem is that the APIs are so primitive still? Its like 'oh, we can do a table in the client - as long as all the rows are primitive types and ideally on the back end in a single table'. And, 'oh yeah, its easy, just write all this incredibly tedious and repetitive code for every single scenario that the client side might need to support for your APIs back to the server- and do it three times'. My thoughts are to extend GWT to be a more full fledged client. That has understandings of things like having a graph of objects, and when modifications are made posting the changes simultaneous both in the client and also back to the server so the server-side EOEditingContext can keep up, etc. Is this just a dumb idea because I have been so far away from doing client (as in humans) interface work for so long and am just ignorant of advances that have been made? Presuming that the state of affairs for being able to rapidly wire up client-side interfaces to server-side business logic (yes, I 100% understand it is not that simple) - what do other folks think is the way to go? Thanks for any feedback, and also my apologies (one more time) if I a just an ignoramus about how tedious it seems to be to build modern 'within the browser' client side apps, - Mike On May 24, 2011, at 6:05 AM, Kieran Kelleher wrote: Great illustration! I am speechless! On May 24, 2011, at 8:32 AM, David Avendasora wrote: Hi Mike, On May 23, 2011, at 8:17 PM, Michael DeMan wrote: Yes, I know. The problem is more related to staffing in regards to full time junior software developers and such. Basically, because of the tiny market share WO has, a lot of younger folks perceive it (correctly) as some kind of oddball technology. While it is uncommon, I
Re: WOGWT adaptor
see inline. On May 20, 2011, at 9:46 AM, Chuck Hill wrote: On May 19, 2011, at 9:07 PM, Michael DeMan wrote: Hi John, Thanks for the follow up. The bottom line is that for the current contract that I am on, WO is plagued in two (of the same old) areas: 1) Lack of developers. As we all know, its a pretty tiny marketplace. The people generally are top notch, but nonetheless for a large company they need from a risk management perspective to know that they can find people, whether current employees or run over a bus, find more interesting things to do in life - or whatever. There are still some of use contractors out here. :-) Chuck Yes, I know. The problem is more related to staffing in regards to full time junior software developers and such. Basically, because of the tiny market share WO has, a lot of younger folks perceive it (correctly) as some kind of oddball technology. With a mobile workplace, even kids straight out of college are concerned about what their resume will look like after 3-5 years on a full time job. Yes, a catch-22 I agree. - Mike P.S. - sorry for the slow reply, catching up on emails. ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: WOGWT adaptor
Yes, I agree on WOWODC. I was actually thinking about it when the announcement came out a month or so ago. We have business partners in Chicago too, might make help sense to the company that way to pay for things. Plus from there, its awful close for my wife and I to scoot over to Sweden to spend a little time with her family. Thanks for putting the idea back in my mind :) - Mike On May 20, 2011, at 9:53 AM, Paul D Yu wrote: Chuck, US? or used??? Your client should send you and some newbs to WOWODC, Mike. Paul: ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
WOGWT adaptor
Hi All, Does anybody know status on the WOGST adaptor (is it reliable/well designed?) - or is there another standard technique to use to be able to utilize GWT on the client side with WebObjects on the back end? http://sites.google.com/site/wogwtadapter/ Thanks, - Mike DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: WOGWT adaptor
Hi John, Thanks for the follow up. The bottom line is that for the current contract that I am on, WO is plagued in two (of the same old) areas: 1) Lack of developers. As we all know, its a pretty tiny marketplace. The people generally are top notch, but nonetheless for a large company they need from a risk management perspective to know that they can find people, whether current employees or run over a bus, find more interesting things to do in life - or whatever. 2) Lack of client side stuff. I personally have steered clear of JavaScript since when Netscape first prefixed the name 'java' onto their client-side browser scripting technologies. Nonetheless, for large companies and for internal-only back office operations, it is nice to be able to deliver quasi-native-desktop application working environments to folks within the browser with minimal risk to core functionality. It seems that GWT is relatively mature now and is possibly a solution for the work scenario I am in. I will also follow up with you off-list within the couple of days. Again, thank you for the follow up. - mike On May 19, 2011, at 8:24 PM, John Huss wrote: I don't think it's actively maintained. I started a project called WOGWT (also on google code); it's out of date, but newer than this one. It really depends on what you need because you can communicate with a WO server in many possible ways: 1) JSON/XML via direct actions 2) JSON/XML via REST 3) JSON/XML via component actions 4) RPC via direct actions 5) RequestFactory somehow For JSON or XML you don't really need anything specific to GWT on the server. For RPC, WOGWT has a request handler you could use. RequestFactory is the newest RPC method in GWT and could be very useful, but I haven't heard of anyone integrating it with WO yet. What are you looking to do? John On Thu, May 19, 2011 at 7:18 PM, Michael DeMan webobje...@deman.com wrote: Hi All, Does anybody know status on the WOGST adaptor (is it reliable/well designed?) - or is there another standard technique to use to be able to utilize GWT on the client side with WebObjects on the back end? http://sites.google.com/site/wogwtadapter/ Thanks, - Mike DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/johnthuss%40gmail.com This email sent to johnth...@gmail.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: what will we miss about Max OS X?
I agree with the poster below - OSX Server is a nice package for a small office general purpose e-mail/file/IM server. However deploying production web-apps or other services, I would never even consider it. The only possible thing to miss on that side might be some of the admin tools for hardware status and such, but if you get a modern SuperMicro or Dell+DRAC Enterprise card, pretty much all that stuff for status on fans, temps, disk/raid status is built in to the hardware - accessible via a web browser and configurable to generate e-mail alerts. Toss vmware on top of that hardware platform and install your preference of open source UNIX-like operating systems from there. On Dec 20, 2010, at 11:54 AM, Pascal Robert wrote: Personally, OS X Server is useful for just Web hosting. As a general workgroup server, now that's different. I made a chart of the Mac Mini Server vs Windows Small Business Server on Dell/HP/Lenovo boxes, and the Mini is 50% cheaper while not having any limit of the number of users. And OS X Server is a joy to install vs. Windows SMB, I had to install SMB and that stupid crap won't warm you about not having enough RAM until it's half-way into the install, and when you got it to run, it tell you to disable the DHCP service on your network so that Windows start its own! I am curious what others are thinking about this. My company has several data centers around the work running on Mac OS X Servers, but given the announcements from Apple, we are obviously re-thinking our deployments. And as we do so, a few things come to mind. For example: - No more Software Update. We could actually be more easily in control of our installations. - The ability to take extra crap off of the servers. I have only one word. iTunes. Why is it so hard to remove this from our servers? - We could go to different kinds of hardware, like blade systems. - We can use a more easily virtualized OS. So, what will we miss? I think we may miss launchd, or at least I will. But then, for example, JavaMonitor does not control app instances with launchd and I think it should, so it is obviously not as compelling to others as I think it should be. Will we miss Server Admin? No. Nice GUI but then, where the heck does it put things and what is not quite available via the UI? For every time it helps, there is another time it causes other hassles. So, is there anything else to miss? Maybe not. The WO deployment mailing list might be getting more interesting. We will see. - ray ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/probert%40macti.ca This email sent to prob...@macti.ca ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Application monitoring
There are piles of free/opensource tools out there nowadays for network monitoring. I've just gone through the process of evaluating again for a small ISP and we settled on a mix of solutions, the two I would recommend for doing something like 'connect to port 80 and verify response HTML contains some sort of string' (this would do what you want?) are: zenoss - benefits --- OSX package for installation --- can monitor lots of other stuff too - detriments --- can be intimidating to configure smokeping - benefits --- fast and simple - detriments --- requires a little command line work to setup --- for a large installation becomes unmanageable Also cacti is a good tool, but until 8.8 comes out setting up, adding in the 'plug in architecture', then adding the plug ins you want is a bit tedious. On Nov 15, 2010, at 8:11 AM, Greg Lappen wrote: Hi all, We just had an issue with our WebObjects application becoming unresponsive on our new production server (a Mac Mini of course!). The java process was running, but not even our login page would show up - we got the No instance available message from mod_webobjects. What I'd like to do is setup something (probably monit) to monitor and test the app periodically and restart the java process when necessary. I've used monit in the past with Ruby on Rails and Java app servers, but not with WebObjects. I'm wondering if anyone else has setup something similar, and how you did it. Is there a way to invoke WOMonitor to start/stop the application from the command line, so I can call it from monit, or am I better off replacing WOMonitir with monit altogether and just maintaining the startup options in my monit configuration? Greg ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Does Apple stop to use WebObjects for its internal tools?
Well I can not say for sure, but it is incredibly difficult to get folks who have expertise in WebObjects anywhere, at low cost. It also has been a dying technology since NeXT got Apple back. I am not sure why it was never just open sourced, other than it must be that somebody somewhere at ex-NeXT or Apple has an unreasonable ego. Also, there is no reason for a large company that has staffing requirements, to not use technologies that have broader exposure in advance to incoming technology professionals On Sep 9, 2010, at 11:54 PM, Mertz Stéphan wrote: Hi, The new 'the Sales and Trend reporting module' of iTunes Connect is develop with JSF instead of WebObjects. Does Apple stop to use WebObjects for its internal tools? Does someone know what is powering the new Ping social network ? Regards, Stéphan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
API deprecation request
Hi All, Two caveats before any replies to flame me for being ignorant: #1. I am unsure where to post requests on project-wonder requests, so am sending here. Please advise. #2. Caveat on below, code where I found this was linked to WO 5.2, not WO 5.4, if I am out of date (i.e. the below is known to be no longer an issue in WO54) or off-base on my request for other reasons, please advise and accept my apology in advance. Nonetheless, it is still my understanding that the notion of '...CaseInsensitive...' does not apply very well to things like Boolean, Float, Long, CLOB, NSData, etc. I am not a committer on the wonder tree, and would ask that somebody do a review and place the request below under consideration. I would request that the following method signatures be deprecated: public static NSMutableArray? sortedMutableArraySortedWithKey(NSArray array, String key) public static U NSArrayU sortedArraySortedWithKey(NSArray array, String key) And replaced using the exact same implementations, but with a new signature, with something similar to: public static NSMutableArray? sortedMutableArraySortedWithKeyUsingToString(NSArray array, String key) public static U NSArrayU sortedArraySortedWithKeyUsingToString(NSArray array, String key) i.e. - rename the existing methods, and provide a deprecated method with the old signature that just calls the new method. Basis for this request is: That the method signatures as-are do not adequately describe the behavior of the method given the implicit cast of the KVC value from its true value to its 'toString' value. Current method signatures imply that the WebObjects KVC will honor 'equals()', which it does not. I would also suggest that: public static U NSArrayU sortedArraySortedWithKey(NSArray array, String key, NSSelector selector) disallow a NULL NSSelector completely and throw an appropriate exception. snippet from ERXArrayUtilities: /** * Sorts a given array with a key in ascending fashion and returns a mutable clone of the result. * @param array array to be sorted. * @param key sort key. * @return mutable clone of sorted array. */ // CHECKME ak: I probably wrote this, but do we really need it? public static NSMutableArray? sortedMutableArraySortedWithKey(NSArray array, String key) { return sortedArraySortedWithKey(array, key).mutableClone(); } /** * Sorts a given array with a key in ascending fashion. * @param array array to be sorted. * @param key sort key. * @return mutable clone of sorted array. */ public static U NSArrayU sortedArraySortedWithKey(NSArray array, String key) { return sortedArraySortedWithKey(array, key, null); } /** * Sorts a given array with a key in ascending fashion. * @param array array to be sorted. * @param key sort key. * @param selector sort order selector to use, if null, then sort will be case insensitive ascending. * @return sorted array. */ public static U NSArrayU sortedArraySortedWithKey(NSArray array, String key, NSSelector selector) { ERXAssert.PRE.notNull(Attempting to sort null array of objects., array); ERXAssert.PRE.notNull(Attepting to sort array of objects with null key., key); NSArray order=new NSArray(new Object[] {EOSortOrdering.sortOrderingWithKey(key, selector == null ? EOSortOrdering.CompareCaseInsensitiveAscending : selector)}); return EOSortOrdering.sortedArrayUsingKeyOrderArray(array, order); } ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: API deprecation request
Also, just realized I had a (at least one) typo: OLD: That the method signatures as-are do not adequately describe the behavior of the method given the implicit cast of the KVC value from its true value to its 'toString' value. Current method signatures imply that the WebObjects KVC will honor 'equals()', which it does not. NEW: That the method signatures as-are do not adequately describe the behavior of the method given the implicit cast of the KVC value from its true value to its 'toString' value. Current method signatures imply that the ERX method will honor 'equals()', which it does not, and WO/EOF is required to. Michael DeMan (WO) wrote: Hi All, Two caveats before any replies to flame me for being ignorant: #1. I am unsure where to post requests on project-wonder requests, so am sending here. Please advise. #2. Caveat on below, code where I found this was linked to WO 5.2, not WO 5.4, if I am out of date (i.e. the below is known to be no longer an issue in WO54) or off-base on my request for other reasons, please advise and accept my apology in advance. Nonetheless, it is still my understanding that the notion of '...CaseInsensitive...' does not apply very well to things like Boolean, Float, Long, CLOB, NSData, etc. I am not a committer on the wonder tree, and would ask that somebody do a review and place the request below under consideration. I would request that the following method signatures be deprecated: public static NSMutableArray? sortedMutableArraySortedWithKey(NSArray array, String key) public static U NSArrayU sortedArraySortedWithKey(NSArray array, String key) And replaced using the exact same implementations, but with a new signature, with something similar to: public static NSMutableArray? sortedMutableArraySortedWithKeyUsingToString(NSArray array, String key) public static U NSArrayU sortedArraySortedWithKeyUsingToString(NSArray array, String key) i.e. - rename the existing methods, and provide a deprecated method with the old signature that just calls the new method. Basis for this request is: That the method signatures as-are do not adequately describe the behavior of the method given the implicit cast of the KVC value from its true value to its 'toString' value. Current method signatures imply that the WebObjects KVC will honor 'equals()', which it does not. I would also suggest that: public static U NSArrayU sortedArraySortedWithKey(NSArray array, String key, NSSelector selector) disallow a NULL NSSelector completely and throw an appropriate exception. snippet from ERXArrayUtilities: /** * Sorts a given array with a key in ascending fashion and returns a mutable clone of the result. * @param array array to be sorted. * @param key sort key. * @return mutable clone of sorted array. */ // CHECKME ak: I probably wrote this, but do we really need it? public static NSMutableArray? sortedMutableArraySortedWithKey(NSArray array, String key) { return sortedArraySortedWithKey(array, key).mutableClone(); } /** * Sorts a given array with a key in ascending fashion. * @param array array to be sorted. * @param key sort key. * @return mutable clone of sorted array. */ public static U NSArrayU sortedArraySortedWithKey(NSArray array, String key) { return sortedArraySortedWithKey(array, key, null); } /** * Sorts a given array with a key in ascending fashion. * @param array array to be sorted. * @param key sort key. * @param selector sort order selector to use, if null, then sort will be case insensitive ascending. * @return sorted array. */ public static U NSArrayU sortedArraySortedWithKey(NSArray array, String key, NSSelector selector) { ERXAssert.PRE.notNull(Attempting to sort null array of objects., array); ERXAssert.PRE.notNull(Attepting to sort array of objects with null key., key); NSArray order=new NSArray(new Object[] {EOSortOrdering.sortOrderingWithKey(key, selector == null ? EOSortOrdering.CompareCaseInsensitiveAscending : selector)}); return EOSortOrdering.sortedArrayUsingKeyOrderArray(array, order); } ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Is that difficult to make an Update operation?
Gustavo, I'll respond off-list temporarily. - mike Gustavo Pizano wrote: Hello Mike. public static Product findByProductCode(EOEditingContext ec, String productCode) ...and you would do like... Product thisProduct = Product.findByProductUPC(defaultEditingContext(), somecode); if (thisProduct != null) { thisProduct.addQuantity( 5 ); // or whatever quantity to be added/subtracted, etc, which in turn would use the built-in method setQuantity(Integer value); } defaultEditingContext().saveChanges(); // depending on your specifics, maybe this should be inside the 'if' statement above? MM are you telling me that EOGenerated java file has such a methods, or that I should implemented in the subclass of _Product.java? If they should be, then there are not, in my case, :S:S :(. Well yes, Im new to EOF, have been trying to learn from a while, but always something happens and I have to put it aside, so so far, to keep things simple at the beginning Im using the session's defaultEditingContext, probably I will change it for some other operation to a custom ERXEC. #2. The rest of your code in regards to actually grabbing the EOModel, grabbing the EODatabaseContext, the EODatabaseChannel, etc - yes, you are 100% correct, it is generally that convoluted. The point of EOF is to abstract the relational database away so it is very infrequent that you should ever have to do this. With EOF, you want to think in terms of the 'object graph' - java objects in your editing context. About the adaptors and dbcontexts, when you refer to , you should ever have to do this, its because of the methods you mentioned at the beginning of your reply? which would handle this situation for me?, but as I said I have no such a methods generated. Oh, I guess P.P.S. - make sure you are using the project wonder frameworks. All that craziness to get the EODatabaseChannel, even though you rarely need it, has cover methods in Wonder, and there are multitudes and multitudes of other things like that in Wonder too. Yes Im using wonder, so where , or how can I use it to my advantage with the EOChannel's ?, I was looking a way but couldn't . Thanks for your reply Gus On 1.3.2009, at 10:51, Michael DeMan (WO) wrote: Hi Gustavo, Two things I can think of, feel free to elaborate more since I am responding from an overall quick read of what you are doing and presuming you are pretty new to EOF. My response here could be completely off base if my instinct your questions is not correct. In regards to your one question about getting a hold of There are two things going here that I can think of. #1. The fundamental design of EOF is to avoid doing things like talking to database adaptors, JDBC/ODBC clients, etc, directly. For the section of code where you need to update the quantities, normally, for a given database table like 'PRODUCT', there would be an associated java EO object, with a utility method like... public static Product findByProductCode(EOEditingContext ec, String productCode) ...and you would do like... Product thisProduct = Product.findByProductUPC(defaultEditingContext(), somecode); if (thisProduct != null) { thisProduct.addQuantity( 5 ); // or whatever quantity to be added/subtracted, etc, which in turn would use the built-in method setQuantity(Integer value); } defaultEditingContext().saveChanges(); // depending on your specifics, maybe this should be inside the 'if' statement above? ...keep in mind the above is just very loose pseudo-code as an example, and using the 'defaultEditingContext()' is just a quick convenience for the pseudo-code. Also keep in mind that the static utility method is something you will either need to make by hand, or can have made automatically by EOGenerator. #2. The rest of your code in regards to actually grabbing the EOModel, grabbing the EODatabaseContext, the EODatabaseChannel, etc - yes, you are 100% correct, it is generally that convoluted. The point of EOF is to abstract the relational database away so it is very infrequent that you should ever have to do this. With EOF, you want to think in terms of the 'object graph' - java objects in your editing context. It requires a slight shift of thinking to use EOF effectively, and even though we as java programmers want to 100% work with graphs of persistent object graphs in a fluid and simple way, there is the old impedence mismatch between object graphs and traditional SQL databases. http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch In regards to those 'static utility methods' that you should have in every java EO class to simplify the code needed to fetch things, create new objects, etc, from the database: Make sure you have an actual 'hard' java class for each one of your enterprise objects. The best way to do it when first getting started, is to use EOGenerator... http
Re: question on security scanning
Hi, To the best of my knowledge, your synopsis that the WO/EOF architecture insulates you from many security issues is essentially correct. Most of the issues in this area revolve around PHP and similar technologies where injection and scripting attacks are a huge issue. For those kinds of attacks, the biggest thing I can think of that affects WO is the regular old session hijacking via the URL which can be obviated by creative use of encrypted cookies to ensure that anybody who hits the app with a session URL, also has that cookie on their machine with matching session ID (or username, etc). On the other hand, there still can be configuration issues that can cause grief - mostly the the public facing HTTP server(s) that your WOAdaptor is running on - which although pretty much can be used only for denial of services issues, are still issues none the less. A couple quick examples would be like... - is JavaMonitor accessible from the outside world? Obviously bad news since JavaMonitor is subject to brute force password attacks. - if you require login to your application (similar to JavaMonitor issue), once password login fails 3-5 times in a row, does the account automatically get locked out? - if you are using HTTPS, is the web server configured not to use weak / deprecated encryption algthorithms? - does the web server accidentally have POP3 or something open on it to the public, subject to brute force attacks, which in turn could give somebody SSH access to it or similar? And once a compromise is made there be able to use the web server to try and break into your your application and/or database servers? My background on this kind of stuff is primarily via small e-commerce deployments, and have regularly used http://www.securitymetrics.com for scanning to meet VISA/MasterCard PCI 1.2 compliance. Depending on your needs, something like SecurityMetrics may be inappropriate, insufficient, or over kill. I do like the extra peace of mind provided knowing that servers are scanned for security vulnerabilities regularly, and they have found both minor and important issues for me in the past. My 2-cents anyway, and I am also interested to see what others have to say. - Mike TW wrote: All: I just had a meeting regarding one of my apps today with some central IT types at our university. One of the questions that was asked of me (for the first time actually) was whether I had run a security scanner test the application. While I'm not so naive as to think there can't be any security issues, I had always felt that the many levels of abstraction in WO/EOF naturally insulated me from some of these considerations. For background, this central IT group is heavily microsoft leaning - so they kind of live in a different world where security is concerned and think they believe that the entire world of computing has the same architectural considerations they do. Their question was obviously out of concern that an attack could be crafted against the app to extract data from the database. It's difficult for me to imagine how this would be possible with WO/EOF but I may have naively looked past this. To get to the point, I'd be interested in hearing from developers on list about whether you have scans performed against your apps. Yes or no, what were the considerations that drove the choice. Tim Worman UCLA GSEIS ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: WO 5.3 or 5.4
I have developed WO 5.4 under OSX 10.4, including switching back and forth. If you are just getting started, I would recommend trying to get 5.4 running if you can. Ideally, upgrading your machine to OSX 10.5 is the way to go, but if that is impossible then... You want to swap out the WebObjects 5.3 and 5.4 frameworks on your local machine - or rather, replace the 5.3 frameworks with the 5.4 frameworks. Download the WO 5.4 installer and open it up so you can see the frameworks. More details on what you should see, and where it should go is at: http://wiki.objectstyle.org/confluence/display/WO/WO+5.4+Getting+Started#WO5.4GettingStarted-DevelopingwithbothWebObjects5.4and5.3 - Mike Francesco Romano wrote: On 23/dic/08, at 17:09, Simon McLean wrote: On 23 Dec 2008, at 16:03, Francesco Romano wrote: On 23/dic/08, at 16:55, Pascal Robert wrote: Le 08-12-23 à 10:50, Francesco Romano a écrit : Hi... I made a little mistake... I'm learning WO and developing an application. I use Leopard. The computer where I'll deploy the app use Tiger... (so I think it can't have WO 5.4) If Java 1.5 is available on the Tiger box, you can use 5.4. Embed the WO frameworks in your app, this way you won't have to install 5.4 on the Tiger box. How can I do that? assuming you are using Wonder, put these in your build.properties embed.ProjectLocal=true embed.External=true embed.Local=true embed.User=true embed.System=true embed.Network=true I'm using Wonder.. I tried this but it does not work (it continue to read the frameworks in /Library/Frameworks on the deployment computer). I added this in the file Properties in Resources,... is the wrong place? ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to webobje...@deman.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Workflow framework?
It has occurred to me in the past that workflow is really just a specialized case of a finite state engine. Each state has a set of exits (transitions) to a next state. Those sets of exits are defined by a set of conditions. If all the conditions are met, then the object transitions to the next state. In the real world, it has to be a bit more complicated because defining the state transitions can result in the possibility that an object at a given state may satisfy the conditions to go to two or more 'next states'. Human error on data entry - garbage in/garbage out, that sort of thing. The real world workaround on that is to provide a sort order on the exit transitions to force them to be checked in a specific order. Immensely helpful for debugging. The cool thing about thinking about it is a finite state engine is that the technical stuff is so thoroughly documented. Plus, visualizing it is easier. A bunch of circles on a piece of paper with arrows coming in from other circles and arrows going out to other circles. Kind of helps keep the design clean instead of cluttering the design up with the specifics of the type of work to be done. Other conditions can be like If object has been stuck in this state for more than 24 hours, then move to state 'needs user review', etc. Thinking about it terms of queues an actions... All objects in a given state, would be in a 'queue' - waiting to transition to the next state. Transitioning from one state to another, would be an 'action', or perhaps a condition that was satisfied by some 3rd party (human?) action. Anyway, my 2-cents on one to approach the problem. - Mike Josh Paul wrote: I think it would be a very valuable framework for everyone. I'm curious about your approach. On Nov 22, 2008, at 9:27 AM, Mark Morris wrote: I wrote one a few years ago. From time to time I've thought about updating it as well as another framework and contributing them, if people might find them useful. There are a few ways to approach workflow. Email me and we can see if what I have might be a good fit for your project. I put a lot of time and thought into it. It is generic, and it was used very successfully in a project a while back. Regards, Mark On Nov 17, 2008, at 3:28 PM, Timothy Reaves wrote: I can't seem to locate a framework for handling workflow. Does one exist? ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/markm%40onpointsoftware.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/joshpaul%40gmail.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: default superclass package for eogen files
Hi, change the _Entity.java template file to look something like this right at the top of it: for: COM.COMPANY.MYBASECLASS public abstract class ${entity.prefixClassNameWithoutPackage} extends #if ($entity.parentClassNameSet)${entity.parentClassName}#elseif ($entity.partialEntitySet)er.extensions.partials.ERXPartial${entity.partialEntity.className}#elseif ($entity.parentSet)${entity.parent.classNameWithDefault}#elseif ($EOGenericRecord)${EOGenericRecord}#else COM.COMPANY.MYBASECLASS#end { - Mike Freddie Tilley wrote: Is there way to set a default superclass package, so that it doesn't have to be set manually every time I generate an eogen file for a model? Freddie Tilley ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: clearing a toMany relationship fault
Shallow and Deep, with an optional depth setting? Shallow is the current EO and its toMany, then stops. Deep continues on through the graph to a depth of 'depth' ? Shallow is a wrapper method of Deep with 'depth = 0' ? This could be a very expensive operation if mis-used, but is badly needed. - mike Chuck Hill wrote: This is something that really should get done as part of a refreshing fetch. I think bugs have been filed on this, but another voice increases the priority. Was there some other place you were thinking of having this called automatically? It might be useful to add a refresh() method to ERXGenericRecord that would refresh the snapshot and all to-many() relationships. But then... what about the related objects? How far do you go? Chuck On Sep 3, 2008, at 5:04 AM, Lachlan Deck wrote: Okay, so there's ERXEOControlUtilities.clearSnapshotForRelationshipNamed[InDatabase] (which saves me a few lines of code :) but which doesn't appear to be auto-called from anywhere(?). Would it be useful for there to be a property that does something like this automatically? What I've now got in my ERXGenericRecord subclass now is: public void awakeFromFetch( EOEditingContext editingContext ) { super.awakeFromFetch( editingContext ); if ( editingContext == EOSharedEditingContext.defaultSharedEditingContext() ISHApplication.ishApplication().hasFetchedInitialSharedRecordsForEntity( entityName() ) ) { for ( Enumeration ? en = classDescription().toOneRelationshipKeys().objectEnumerator(); en.hasMoreElements(); ) { String key = en.nextElement().toString(); EORelationship inverseRelationship = entity().relationshipNamed( key ).inverseRelationship(); if ( inverseRelationship != null inverseRelationship.isToMany() ) { EOEnterpriseObject eo = ( EOEnterpriseObject )valueForKey( key ); if ( eo != null ) // this next line covers Anjo's code from the wiki page below ERXEOControlUtilities.clearSnapshotForRelationshipNamed( eo, inverseRelationship.name() ); } } } } This is working fine. Is there any suggestions on anything else that might need doing for completeness? On 03/09/2008, at 5:07 PM, Lachlan Deck wrote: Hi Simon, On 03/09/2008, at 4:37 PM, Simon McLean wrote: this might help: http://en.wikibooks.org/wiki/Programming:WebObjects/EOF/Using_EOF/Caching_and_Freshness#Refreshing_Many-to-Many_Relationships Yes - that's exactly the sort of stuff I'm trying to solve. Question: is there some property in Wonder that does this automatically? On 3 Sep 2008, at 07:34, Lachlan Deck wrote: Hi there, just wondering ... how would I go about clearing the faults for certain toMany relationships of an object. i.e., I'm iterating through certain toMany keys and I want to obtain the faults without firing them (best case scenario) and then clear them so that they are refreshed. Any suggestions? with regards, -- Lachlan Deck ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: processing incoming e-mails
Hi All, Thanks for the help, I have what I need now - james and subetha + a little code snippet from Mike Scrag. Actually, I didn't specify my problem set clear enough, and I know the intended recipients of e- mails, so I think Mike's stuff will work the easiest for what I need right now. Amusingly, I also received earlier today a marketing e-mail from Chase Manhattan. When I hit their unsubscribe link, I got a 'org.apache.james' exception, an hour later, it worked. Their little spam campaign must have overloaded their unsubscribe server ;) Thanks again for the help! - mike On Jul 15, 2008, at 7:31 AM, Philippe Rabier wrote: Hi Pascal and other, I'm not sure that solution meets requirement because, as far as I understand, Michael is looking for a solution that analyzes every incoming email for any recipient, that would allow to ignore some emails for example. But all solutions proposed (http://james.apache.org/ or http://subethasmtp.tigris.org/) aim to replace existing smtp servers, I guess. It could be tricky to integrate in an existing infrastructure. Or do I miss something ? Philippe On 15 juil. 08, at 02:38, Pascal Robert wrote: One solution would be to store the emails to an account and fetch it by IMAP. Works great, I have 3 apps who's doing this. Hi, I was wondering if anybody could recommend an open source package for processing incoming e-mails. Basically, we need a way to receive an e-mail body (the mail server by piping it directly into a java app on STDIN or a socket) that processes it, putting attachments as blobs into the database, tagging it as 'owned' by the recipient if the recipient already exists in the database, etc. I can find all kinds of stuff out on the net for delivering e- mail, but very little about receiving it. Michael DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/prabier%40mac.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/mdeman%40ubermind.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
processing incoming e-mails
Hi, I was wondering if anybody could recommend an open source package for processing incoming e-mails. Basically, we need a way to receive an e-mail body (the mail server by piping it directly into a java app on STDIN or a socket) that processes it, putting attachments as blobs into the database, tagging it as 'owned' by the recipient if the recipient already exists in the database, etc. I can find all kinds of stuff out on the net for delivering e-mail, but very little about receiving it. Michael DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: WO 5.4.2 is out
ADC reports it as a 'nightly build' as of June 10th 2008, along with a nice big disclaimer on 'prelease' software. This is actually ideal, if they could do prelease for people to get feedback to Apple with, and then when the real releases come out they are solid. Question is, what is this? - mike WebObjects Nightly Builds WebObjects 5.4.x, 5.5 nightly builds in Maven 2 repository format Download Name File Size Date Posted WebObjects Nightly Build (Zip) 36 MB 10 Jun 2008 On Jul 1, 2008, at 12:44 AM, Johann Werner wrote: Hi list, seems that WO 5.4.2 has gone final now. The knowledge base article for the OS X Server 10.5.4 update lists Includes the Web Objects 5.4.2 Update. However as I can see the 10.5.4 client update does not include that WO update. Unfortunately it is not available as separate download yet. Perhaps WO 5.4 will be usable finally? ;-) jw ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: WO 5.4.2 is out
The below certainly appears to be the 'real thing' given that version.plist file. The contents of the ADC ZIP file shows it is a different animal, does anybody know what this is and/or how to install it? I would be more than happy to move one of my development machines over to one of the prerelease versions and keep an eye out for any regression bugs and such. drwxr-xr-x 2 staff 476 Jun 8 20:00 5.4.2-SNAPSHOT drwxr-xr-x 2 staff 374 Jun 8 20:00 5.5-SNAPSHOT drwxr-xr-x 2 staff 374 Jun 8 20:00 5.6-SNAPSHOT -rw-r--r-- 1 staff 474 Jun 8 20:00 maven-metadata.xml -rw-r--r-- 1 staff32 Jun 8 20:00 maven-metadata.xml.md5 -rw-r--r-- 1 staff40 Jun 8 20:00 maven-metadata.xml.sha1 - mike On Jul 1, 2008, at 3:51 AM, Johann Werner wrote: That is what my version.plist looks like after applying the update: keyBuildVersion/key string21/string keyCFBundleShortVersionString/key string5.4.2/string keyProjectName/key stringJavaWebObjects/string keySourceVersion/key string1034/string so I would confirm that. Though I don't know if this is still a build taken from nightly as Michael suggested, that would be very uncommon for Apple to include a beta (or even alpha) version of a product in an official OS X update (ok, sometimes the OS itself seems in beta stage but you know what I mean... ;-) jw Am 01.07.2008 um 12:34 schrieb Miguel Arroz: Hi! Does that mean that installing the 10.5.4 update on a Server will automatically upgrade WO to 5.4.2? That would be a bit aggressive, specially for people who are deploying 5.3 apps on Leopard... Yes, I know I should embed the frameworks, but I still didn't have time to do so. Yours Miguel Arroz On 2008/07/01, at 08:44, Johann Werner wrote: Hi list, seems that WO 5.4.2 has gone final now. The knowledge base article for the OS X Server 10.5.4 update lists Includes the Web Objects 5.4.2 Update. However as I can see the 10.5.4 client update does not include that WO update. Unfortunately it is not available as separate download yet. Perhaps WO 5.4 will be usable finally? ;-) jw ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/arroz%40guiamac.com This email sent to [EMAIL PROTECTED] http://www.survs.com ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/mdeman%40ubermind.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: WO 5.4.2 is out
Yes, I see now - a little googling shows me that I must have ignored some e-mail threads about all this a while back. - mike On Jul 1, 2008, at 12:11 PM, John Huss wrote: You know, if you want to test the prerelease builds you can use Apple's new nightly Maven repository and get new nightly builds every night. John On Tue, Jul 1, 2008 at 12:31 PM, Michael DeMan [EMAIL PROTECTED] wrote: I would be more than happy to move one of my development machines over to one of the prerelease versions and keep an eye out for any regression bugs and such. ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: Backtracking and Safari
Hi, Ironically, I just bumped into some back tracking issues as well. Setting the appropriate headers in the response, plus adding the little iFrame per the apple FAQ works great for session based pages where a form has been submitted, and such, but does not work at all for direct actions. Use case is something like: (A) User goes to a DirectAction for a customer execute a purchase. (B) Customer executes the purchase, a 'Thank You' page is returned (via pageWithName, session got created) and the session is terminated. (C) In Safari, but not Thunderbird or IE6, the back up button allows anybody who comes to that computer to view the prior page, including credit card information. I played a lot with even setting the page cache to zero, forcing a URL key/value pair on the link to the direct action, all to no avail. Does anybody know a workaround for this? If the user says has a field validation error, and additional pages are inserted between (A) and (B) above from reporting validations and having the user correct mistakes, those pages operate as expected, but even then, it is still possible for a determined user to back up all the way to the very first direct action page and see all the data on that original page. Seems maybe Safari is filling in the field values itself from some sort of local cache? Thanks, - mike On Jun 6, 2008, at 12:24 AM, Joe Moreno wrote: Chuck, When I start wondering if Safari is caching a page or if it's my own bug I add something useless to the end of the URL (i.e. either server side or client side via JavaScript). Usually, I'll just tag on a key/value pair such as ?t=1212726377311 which is simply the time. To Safari, and any proxy servers, this appears as a new request. - Joe On Jun 3, 2008, at 17:24:12, Chuck Hill wrote: Hi, Safari, at least as of version 3.1.1 (5525.20) does not seem to respect the headers that control local page caching. The Safari FAQ claims to show how to do this: http://developer.apple.com/internet/safari/faq.html#anchor5 Returning last-modified = (Wed, 04-Jun-2008 00:10:53 GMT); cache-control = (no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0); expires = (Mon, 26 Jul 1997 05:00:00 GMT); date = (Wed, 04-Jun-2008 00:10:53 GMT); pragma = (no-cache); still results in Safari using the local cache instead of making a trip back to the server. The Web Inspector in Safari show that it is getting these headers, but it seems to ignore them. I have reported this to Apple. Obviously, this has rather serious implications for those of use deploying dynamic web applications. The back button is hard enough to deal with when the browser works correctly! Any suggestions for work arounds gratefully attempted. Chuck ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: WO 5.4 / Axis 1.4 / Deserialization
Hi, Yes, running a separate web-services layer to restrict the API available via SOAP/XML and not vending the EOs out directly is the way to go. However, it is nice to have EOs that know how to serialize themselves for different kinds of purposes so those methods are available to be used elsewhere, or if there is any business logic in to be done during the serialization process, that can be handled in the EO itself not in the web services application. Here is the scenario I am thinking about, maybe I'm missing something... Say, a custom report showing detailed online sales for the day before. The first array, the list of purchases can be fixed touching only the web services layer only, modifying the POJO class to vend the purchases as a WOStringKeyMap. However, each Purchase object serializes itself, possibly executing some business logic while doing it, and inside the Purchase is another array of Products that were purchased. Fixing this up would require modifying the business logic layer - a wrapper method in the Purchase EO? serializeForDetailReport() - is say the pre-existing method and is also relied on elsewhere. serializeForDetailReportUsingWOStringKeyMap() - would have to be made as an additional wrapper method in the Purchase EO to implement the workaround of not being able to vend out arrays to 5.4.1 web services consumers. Now if for some reason, a Product also has an array inside it, then yet another wrapper is needed, etc. - mike On Feb 26, 2008, at 3:55 PM, David den Boer wrote: A slightly better way to use webservices (especially if you expect them to be consumed by non-WO applications) is to use primitive types. For instance, if you need to return an array of Foo, the return type for the service method would be Foo[]. We never expose our EO's via webservices, we usually wrap them in POJOs which have very specific attributes for the service and non- required attributes are not exposed. David. On Feb 26, 2008, at 7:22 PM, Michael DeMan wrote: Okay, This workaround seems to work. On the server side I put my array elements in as keys for a WOStringKeyMap and modified the client to get the result array back out via allKeys(). This is a huge problem however as every service, including EOs that contain arrays, would need methods changed/wrapped to return WOStringKeyMap instead of arrays, and this of course would have to be done for both the server and client applications. Does anybody know if Apple has a prioritization on getting this fixed? From what I can tell so far this basically makes WO5.4/5.4.1 unusable as a web services consumer (unless of course you never need to use arrays). - mike On Feb 25, 2008, at 1:41 PM, Art Isbell wrote: On Feb 25, 2008, at 9:09 AM, Michael DeMan wrote: Does anybody know if the item noted on the posting below is fixed in 5.4.1, and if not, could anybody describe the workaround? http://www.mail-archive.com/webobjects-dev@lists.apple.com/msg15103.html It is apparently not fixed in 5.4.1. A workaround would be to rewrite each Web service method that returns NSArray to return WOStringKeyMap. Each Web service client would then need to extract the array from the WOStringKeyMap. Not ideal, but this should work. Aloha, Art ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/ddenboer%40apple.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
Re: WO 5.4 / Axis 1.4 / Deserialization
Okay, This workaround seems to work. On the server side I put my array elements in as keys for a WOStringKeyMap and modified the client to get the result array back out via allKeys(). This is a huge problem however as every service, including EOs that contain arrays, would need methods changed/wrapped to return WOStringKeyMap instead of arrays, and this of course would have to be done for both the server and client applications. Does anybody know if Apple has a prioritization on getting this fixed? From what I can tell so far this basically makes WO5.4/5.4.1 unusable as a web services consumer (unless of course you never need to use arrays). - mike On Feb 25, 2008, at 1:41 PM, Art Isbell wrote: On Feb 25, 2008, at 9:09 AM, Michael DeMan wrote: Does anybody know if the item noted on the posting below is fixed in 5.4.1, and if not, could anybody describe the workaround? http://www.mail-archive.com/webobjects-dev@lists.apple.com/ msg15103.html It is apparently not fixed in 5.4.1. A workaround would be to rewrite each Web service method that returns NSArray to return WOStringKeyMap. Each Web service client would then need to extract the array from the WOStringKeyMap. Not ideal, but this should work. Aloha, Art ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
WO 5.4 / Axis 1.4 / Deserialization
Hi All, Does anybody know if the item noted on the posting below is fixed in 5.4.1, and if not, could anybody describe the workaround? http://www.mail-archive.com/webobjects-dev@lists.apple.com/msg15103.html Basically, I have a fairly simple application that runs fine with WO 5.3 client against 5.3 and 5.4 server. Running the client on WO 5.4 however fails the same way with the server running on either 5.3 or 5.4. I get the following exception on an array of String objects.. It seems related to the list posting described above? org.xml.sax.SAXException: Deserializing parameter 'authenticateReturn': could not find deserializer for type {http://schemas.xmlsoap.org/soap/encoding/ }Array Thanks, Michael DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]
quick question
Does anybody know if:validateForSave() calls validateForInsert() if an object is not in the database yet?I need to do some transaction oriented stuff and want to validate all my object fields so I know its okay, execute a transaction on a 3rd party system, then insert/save my object.I was thinking that calling validateForSave() before my 3rd party transaction would work, but it seems to be calling validateForInsert() somewhere.I'm not 100% sure if it is, and if it is, whether that is the correct behavior or whether I have some custom validation code that is causing it to do that.- mike Michael DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to archive@mail-archive.com
command line EOF + WOContext
Hi All,I have a new (old for me) twist on the old WebObjects command-line start up type stuff.We run nightly jobs for accounting and other things, and I need to be able to mail out WOComponents for statements, trouble ticket reminders, etc.The only way I have ever been able to get a command line WOApplication to be able to do this was to have it send itself a bogus WORequest and then call session() from the direct action in order to get it to instantiate a session, and thereby, a WOContext.I am wondering if there is a clean programmatic way to do this.I have taken numerous tries at this issue over a couple of years and cannot figure out any other way to do it. I always get NULL WOContext in the ways that I have tried, etcI know it may seem odd to even want a WOContext from a command line batch job, but I gotta have that in order to get my e-mail WOComponents, at least it seems that way to me.Thanks, Michael DeMan ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to archive@mail-archive.com
Re: Managing EOF caching
Hi Jerry, A couple of other items off the top of my head in order to manage your memory utilization as you start trying to take advantage of the EOF caching... 1. assuming you are not using undo(). defaultEditingContext().undoManager().setLevelsOfUndo(1); 2. On your snapshots, the method you want to drop that to less than an hour for refresh is: defaultEditingContext().setFetchTimestamp() It used to be that EOF still did not flush out the snapshots correctly but I believe that was fixed a couple of years ago. Apple badly needs to get a Tech Bulletin on EOF memory and performance optimization. There are probably a few hundred people at most with deep WO/EOF experience on this stuff and they all have their bag of tricks and nobody knows each other's tricks that well and all the tricks have one caveat or another. WO works great for small apps, but the minute you get a decent sized application the tuning becomes an issue. On Jan 20, 2006, at 10:20 AM, Jerry W. Walker wrote: Hi, Mike, Thanks for taking the time to do this. If I understand your test correctly, in each of the two cases, you've looped through the 10,000 EOs updating a single one of your 12 attributes. You then did a saveChanges to update the database, resulting in 10,000 individual SQL updates hitting the database, correct? So, the result was 10,000 round trips to the DB, one for each row updated? If all of that is correct, and if it's a trivial change to test, would it be possible to test the difference between a SINGLE locked column vs all columns locked? You've taken the time to do something helpful here and I don't want to reward you by suggesting you need to do a lot more work, but the test I'm suggesting would put the results more in line with the original contention, that locking a single attribute saves a significant amount over locking all the attributes (in your case, 12). If you would rather not take the tests any further, would you mind sending me a tarball of your current test project? I would be pleased to do it. If all of the above is correct, your results say that the difference for a single update is approximately: 27.753 sec / 10,000 = 2.7 ms / update vs. 7.111 / 10,000 = .7 ms / update So we've achieved a 2 ms savings per update between no checking and checking 12 columns. If that's the case, my untested (ignorant?) opinion that the difference is insignificant (and is probably less than 10 ms) stands corrected. Much as I hate to be wrong, my yearning for facts over both my ignorant opinions and other WO old wive's tales leads me to offer you unequivocal thanks for your efforts. Regards, Jerry On Jan 20, 2006, at 12:54 PM, Mike Schrag wrote: I haven't done any timings, but I find it hard to believe that this technique will effect any significant savings for most databases. As Art indicates, the only effect of reducing the number of lock columns is to correspondingly reduce the number of columns in the WHERE clause for updates and deletes. I've always wondered this, too, so I threw together a quick test. I created two identical entities which have 3 ints, 3 booleans, 3 strings, and 3 dates as properties, but one locks all attrs and one locks none. I then inserted 10,000 of each into the db, followed by an update of the same attribute for each with the same change in value. This was run on the latest version of FrontBase on an Intel iMac with WO 5.3: Main.main: 1 with all columns locked = 25753ms Main.main: 1 with no columns locked = 7111ms So in this test, it is 3.6x faster to not lock any columns in this example, with this database, one this hardware. Obviously db benchmarks are never this simple, so take this with a grain of salt. ms -- __ Jerry W. Walker, WebObjects Developer/Instructor for High Performance Industrial Strength Internet Enabled Systems [EMAIL PROTECTED] 203 278-4085office ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/michael% 40geminisolutions.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to archive@mail-archive.com
Re: Managing EOF caching
Oh, one more item. If you can, do saveChanges() frequently. Don't sacrifice the integrity of your sandbox (EOEditingContext), but don't abuse it either. The best I can tell, nobody at Apple has messed much with the saveChanges code and it still runs on a lot original stuff from the late 90s. In essence, my guess is that it is technically correct but nobody ever optimized it and its probably so complicated to optimize that everybody is afraid to do it. I know if I worked at Apple, the last thing I would want to be responsible for is making 'saveChanges () in EOF go faster' and some how introducing bugs. The catch with saving changes often is transactional. Wherever possible, if you know that you can commit the sandbox to the database, do it, it will save massive CPU cycles. There is something really bad in the saveChanges() method that is at least on the order of n^2 or worse. The way to theorize this is to break your stuff into well know transactions that have to be committed to the database completely. Also, you can avoid saveChanges *AND* blow away your cache by using stored procedures on the database side. Instead of saving changes, lock your EOEditiingContext, use the stored procedure to commit, and mark the committed objects+tables as 'dirty' in the snapshot. If you are using nested editing contexts and a bunch of those fancy 'out of the box widgets' then even this may not help without some detailed time spent on the code. On Jan 19, 2006, at 1:35 AM, Michael DeMan wrote: The cheezy option is always hardware. Quick fix, and usually pretty cheap. Definitely not elegant. If this is a production application, I would check swap utilization on the server, and if its low, and especially if there are some bucks for a few extra GB of RAM, do as follows: 1. Get the production system working, deferring the elegant work with a crappy fix. i.e., make sure you have lots of RAM and toss parameters into your shell or Monitor startups like: -Xms512m -XX:NewSize=4m -Xms256m right along with your -DWOAutoOpenInBrowser=false statements, etc. Your apps will get huge, but keep in mind that on a decent UNIX system with WebObjects (and nearly any server-side java app) you can expect a good 100MB+ of RAM to be unused, shared, and swapped out forever. When you look at RAM utilization, only look at whats resident. 2. In regards to more elegant solutions, look at some of the fetches and/or 1:M relationship accesses you do in the application. You can take some of those subroutines and when they're done, have them discard only those objects from your primary editing context and snapshot that they brought in for their local use and that you expect will not be needed in the near future. 3. Even if they are needed in the near future, have your database do the work and optimize your fetches to include only the columns of data you need and where possible use stored procedures. Obviously on this one 'near future' means minutes not milliseconds. 4. If you need the stuff in RAM, buy more RAM! 5. If you're running multiple instances, implement a global cross- instance EODatabaseObjectStoreCoordinator (or whatever the class is called, I forget right now), that will cache all your data in one spot across all your instances on the same host. You need to do a little bit of inter-process notification, but its a well understood methodology and you can find snippets at www.wosource.com. My 2-cents anyway. - mike On Jan 18, 2006, at 10:20 AM, Ken Anderson wrote: Dave, It depends. If it's a to-one relationship, and either: a) The object is already in your current editing context from your fetch, or b) The object is in a different editing context, but the database snapshot is recent enough for your editing context to accept it then yes, there will be no database activity. This is because the object can be found or created purely based on the global ID, which can be constructed because a to-one relationship requires you to know the entire primary key. However, if the snapshot is old, your editing context might refuse the snapshot and request a fresh one (it depends on that context's timestamp or the default timestamp lag). Lastly, to-many faults will always require a trip to the database, since the set information is not known. You can always improve this by setting the to-many relationship to batch fault. Don't forget though, if only one instance of a to-many fault exists at a particular time in the context, no amount of batch faulting will help you. Another way to improve this is to have a method in your class that determines the to-many grouping via an in-memory qualification (if you already have a group of objects you know are the superset). This of course gets dicey, because you're doing EOF's job...but some circumstances might warrant it. To answer your original
Re: Managing EOF caching
Hi, Sounds like your hardware situation is okay. Doesn't matter what the specs are, as long as its got plenty of unused memory. You can always trade RAM for CPU cycles. You are correct on blowing away your editing contexts impacting performance heavily. Of course, the other side of the coin is that if you never do that over time EOF will try to cache the entire database in RAM... Here's a couple small things to look at... #1. Review your EOModel and make sure you are locking only on columns you need to. On fresh applications I've always put in a dateLastUpdated column in each object and lock only on that. A super class called GSGenericRecord implements the following as part of validateForSave(). There is overhead in EOF with the snapshot code in locking. I'm not 100% sure, but I think the snapshot only tracks the columns that you have marked as used for locking in your model. This will save your memory in your snapshot and and reduce the overhead in saveChanges() when EOF has to review the current data against the snapshot. You can actually add this code to your GenericRecord super class and add the column to all your tables on the fly, and defaulting the column to NULL if 3rd party applications are inserting into the database. If 3rd party apps are updating other columns live, then you''ll have to keep those as locked columns anyway though. public void validateForSave() throws NSValidation.ValidationException () if (dateLastUpdated()==null) setDateLastUpdated(new NSTimestamp ()); ... do rest of validation... } #2. If you have certain objects with many columns and you need to only work with some of those columns, make a subclass of your main class in EOModeler. The subclass will include only the columns you need plus of course the columns you lock on. This way EOF will not pull in the extra columns of data, reducing SQL overhead and again RAM utilization. This is only helpful once you've identified which columns are needed for locking - if you lock on every column, then your 'mini' class has to include every column otherwise #3. As you are doing now, review each and every place that you do invalidateAllObjects() or whatever else that blows away the data. Comment out everywhere that you think it is not absolutely needed and perhaps even make a session method wrapper for EZ maintenance for invalidateAllObjects() that also logs out your application memory size, number of objects in the editing context (total, changed, inserted, deleted), etc, so you can review those logs later on to see exactly how much work is being done with each call. Again, I usually subclass EOEditingContext for these handy-dandy wrappers and implement defaultEC() in MySession to return MyEditingContext and ec () in my GenericRecord to return MyEditingContext() for convenience methods. You also have to modify your Session constructor to instantiate MyEditingContext instead of EOEditingContext when it first gets created. Subclassing EOEditingContext is extremely useful as you can do a lot of magic there, and at minimum, have a quick and easy way to override the standard methods to get some high quality logging information. I'd be interested in staying in touch on your progress with this as performance/memory utilization is always tricky business with larger WO applications and its interesting to see what works in what kinds of conditions. Another common workaround I've seen is using raw row fetches on 'search' and 'list' pages to avoid bringing in large numbers of objects into the editing context. However, since your app is transactional not a web-application, that probably wouldn't work here. - mike On Jan 19, 2006, at 7:27 AM, Dave Rathnow wrote: This application runs on a dual processor (2GHz I think) machine with 4GB of RAM so memory isn't much of an issue. Also, throwing hardware at this problem hasn't resulted in any great improvements so we have to start doing opitimization of the code. The good news is that we are currently using very little for the 4GB so enabling EOF caching should enable us to get by for the short term. The app has all the -X options to give it lots of memeory but, because we are waxing the EC, we use very little memory. This, of course will change. The app also runs on a Windoz box so the options for tuning are limited. Thanks, Dave. -Original Message- From: Michael DeMan [mailto:[EMAIL PROTECTED] Sent: January 19, 2006 02:36 AM To: Ken Anderson Cc: Dave Rathnow; 'webobjects-dev@lists.apple.com' Subject: Re: Managing EOF caching The cheezy option is always hardware. Quick fix, and usually pretty cheap. Definitely not elegant. If this is a production application, I would check swap utilization on the server, and if its low, and especially if there are some bucks for a few extra GB of RAM, do as follows: 1. Get
Re: license
I think mostly this is clarification relevant to java-client stuff? Apple's interest would most likely be the server-side components? Either that, or Steve Jobs is planning to roll out 'slabs' or 'thin clients' or 'the next great thing' again? This time with a little broader support than being the crazy kid. - mike On Nov 11, 2005, at 4:01 AM, Mike Schrag wrote: or is it the license.rtf in WebObjects.mpkg/Contents/Resources/ English.lproj/license.rtf: D. WebObjects Software. Subject to the terms and conditions of this License, you may use, install and permit others to access the WebObjects deployment software included with the Developer Software to deploy application programs developed using Apple’s WebObjects Software. You may also reproduce and distribute: (1) over a network, components of the WebObjects deployment software for installation and use by others (“Java Client End Users”) on any remote computer’s volatile memory (e.g. RAM) to enable Java Client functionality for the sole purpose of communicating with Apple’s WebObjects Software that may be installed and executed on the same Apple-labeled computer on which you have installed the Developer Software (the Licensed System); and (2) both manually and automatically over a network, components of the WebObjects deployment software for installation and use by Java Client End Users on any remote computer’s non-volatile memory (e.g. ROM) to enable Java Client functionality for the sole purpose of communicating with Apple’s WebObjects Software that may be installed and executed on the Licensed System; provided that all distributions to Java Client End Users are made under terms that are at least as restrictive as those set forth in this License and contain the disclaimers and limitations set forth in Sections 6 and 7 of this License. Subject to the terms and conditions of this License, you may also deploy server applications built with the WebObjects Software on any platform. I assume it's actually this one, noting the last sentence there (and bbum's blog, which matches :) ). ms On Nov 11, 2005, at 6:56 AM, Mike Schrag wrote: Is http://www.apple.com/legal/sla/webobjects.html the new license? ms ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/mschrag% 40mdimension.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/michael% 40geminisolutions.com This email sent to [EMAIL PROTECTED] ___ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to archive@mail-archive.com