Re: orion + multi processor's X86 PC
The way Java works with respect to CPUs is it implements threading through the native OS it's running on. That way the programmer doesn't have to deal with OS-specific process and threading architectures in his code. The only time this isn't the case is with older VM's on Linux and UNIX where green threads were used. Green threads were a user-level thread library that made the JVM appear to the OS as a single-threaded process. You can still find green threads in some 1.2.x JVMs on Linux and Solaris, but I wouldn't recommend anything less than a 1.3 JVM anyway. So a JVM running on an SMP system is responsible for cooperating with the OS to manage threads across the processors. Orion, JRun, Tomcat, etc. do nothing to limit or enhance SMP support in the Java code because it is entirely up to the JVM and the OS. That said, any recent JVM (i.e., 1.3) from any JVM vendor will support SMP because they all rely on native thread implementations. Scott Stirling On 26 Jan 2001 08:42:01 +0100, PHiL wrote: Hi, We planned to go on production state of our developpement under ORION, but we don't have a clue on multiprocessors (SMP) and Orion. If we run a X86 PC server with 2 XEON and sun's JVM 1.3 + Orion + NT or 2000, is this will be enought to take advantage of SMP ??? Maybe we need to run 2 JVMs and setup a "cluster like" config ??? If someone expirience this, just let us know. Thanks. PHiL.
Orion and J2EE licensing
I'm trying to grasp some J2EE licensing concepts. I'm trying to decide if Sun is fleecing some companies over J2EE branding fees while leaving others alone for arbitrary or capricious reasons. I just posted a long message about it to the jbosslicense group at http://www.egroups.com/group/jbosslicense. There are some very disturbing issues that are not only philosophically interesting, but important to Java developers, organizations and companies who are basing business goals and decisions on server-side Java software. If any of the folks at Orion can comment, that would be fascinating, since Orion is one of the few J2EE servers I know of that's closed-source, but not (as far as I know) branded J2EE. However, I believe the open source J2EE servers out there are as much at risk of being sued or halted by Sun as Orion, based on my understanding of J2EE licensing and branding thus far. If anyone can point to me to some resources on this, please do. I notices these relevant comments from the Orion FAQ: "Q: What sets Orion apart from other application servers? A: Many things make Orion a leader among application servers. A few of these things are: Superb performance. Orion is easily the fastest J2EE-based Application Server Orion is the only commercially available application server with full J2EE support Unique development features like auto-deploy and full hot-swap. Very affordable pricing" Now, since Orion has not (so far as I am aware) licensed J2EE from Sun, there's no way they have the Sun compatibility test suite (CTS) for J2EE, so they obviously haven't even tried to pass the tests. Since BEA, IONA and iPlanet have passed the CTS, I hardly think Orion is "the only commercially available application server with full J2EE support." And I would think that sort of claim is precisely what would put Orion at the risk of being dogged by Sun attorneys. Here's another interesting quote: "Q: Any plans to offer your source under a Linux-style license? A: No, there are currently no such plans. In fact, if we did, Sun might sue us since they see any implementation of the J2EE specification as their intellectual property that we can not show to anyone." This makes no sense. The source code for the RI of J2EE can be downloaded by anyone who agrees to the Sun Community Source License. jBoss implements a large part of the J2EE specs, and that's LGPLed. While I agree with the Orion FAQ that there are certainly issues of intellectual property with J2EE software, I don't agree with that logic at all. I'll say the same thing I said about jBoss on the other list (substituting "Orion" for "jBoss" everywhere): "If Orion is allowed to implement many of the foundational J2EE specs (JNDI, JTA, EJB, etc.), without paying a commercial license fee for the specs and Sun APIs like BEA, IBM, IONA and others have done, doesn't that tear a huge hole in the integrity and legality of Sun's J2EE branding and licensing? It makes it appear as though Sun is unfairly targeting large businesses who use their APIs and specs, while leaving open source/small businesses alone. That would be capricious, and I think illegal of Sun. This may not be an issue now, because Orion is just gaining ground in the business world. But in 6-9 months, if Orion gains momentum, I would expect the J2EE licensees to start complaining about loss of market share to a product that's never commercially licensed the APIs, never paid the contractual fees, and never passed the compatibility tests. They would pressure Sun to enforce the J2EE and Sun Community Source License rules on Orion as a commercial product. This could also apply to JONAS, OpenEJB, Enhydra, jBoss etc." I know this stirs up the pot, so to speak, and I know some people couldn't care less. But for my career and my interests in server-side Java and things like open source and open standards, I think these issues are very important. I'm trying to get some feedback from like-minded folks or from official representatives of commercial concerns on how these issues touch them, whether they feel they've been resolved, how they understand/cope with them, or even if their attitude is "we'll cross that bridge when Sun's lawyers bring us to it." Best regards, Scott Stirling West Newton, MA
RE: www.orionserver.com down again
That's because it was put back up in the interim. I've noticed these downtimes before too. Scott Stirling West Newton, MA -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Juan Gargiulo Sent: Wednesday, December 13, 2000 3:34 PM The site works for me -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Gerald Gutierrez Sent: Wednesday, December 13, 2000 11:36 AM Once again the web site is down. This time a scan shows me that something is listening on port 80, and one can connect to it via [telnet www.orionserver.com 80], but nothing comes back. I'm not sure about the other customers and potential customers of the Orion server, I'd like some explanation for these frequent down-times. Is this the quality of service that one can expect of this application server?
RE: Transaction across several different methods in Session beans
Maybe you're calling begin() and commit() on two different UserTransactions. Does the line where you assign the return value of UserTransaction.begin() to utx work? That looks weird (shorthand coding style), but if it works I guess it's OK. The type of utx isn't declared anywhere in the code you posted. Check these lines: public void begin() { try { utx = ejbCtx.getUserTransaction().begin(); } and: public void commit() { try { ejbCtx.getUserTransaction().commit(); } Scott Stirling West Newton, MA -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Lopez Esteban Sent: Wednesday, December 13, 2000 6:14 AM To: Orion-Interest Subject: Transaction across several different methods in Session beans Hi all, I'm trying to use UserTransactions in a stateful session bean to associate itself with a transaction across several diferent methods, but it does not work. My code is: Stateful Session Bean: public class TransactionBean implements SessionBean { private SessionContext ejbCtx; private Entity entityRole = null; public void setSessionContext(SessionContext context) throws RemoteException, EJBException { ejbCtx = context; } public void ejbActivate() throws RemoteException, EJBException { } public void ejbPassivate() throws RemoteException, EJBException { } public void ejbRemove() throws RemoteException, EJBException { } public void ejbCreate() throws CreateException, EJBException, RemoteException { } public void createEntity(String id) { try { Context context = new InitialContext(); EntityHome entityHome = (EntityHome)PortableRemoteObject.narrow(context.lookup("java:comp/env/entity "), EntityHome.class); ejbEntity = entityHome.create(id); } catch (Exception ne) { ejbEntity = null; ne.printStackTrace(); } } public void setDescription(String description) throws RemoteException { if (ejbEntity == null) { throw( new RemoteException("Entity is null, use createEntity() first")); } try { ejbEntity.setDescription(description); } catch (RemoteException re) { re.printStackTrace(); } } public void begin() { try { utx = ejbCtx.getUserTransaction().begin(); } catch(Exception e) { e.printStackTrace(); } } public void commit() { try { ejbCtx.getUserTransaction().commit(); } catch(Exception e) { e.printStackTrace(); } } public void rollback() { try { ejbCtx.getUserTransaction().rollback(); } catch(Exception e) { e.printStackTrace(); } } } and my client is: public class TransactionTest { public static void main(String[] args) { try { Context context = new InitialContext(); TransactionHome home = (TransactionHome)PortableRemoteObject.narrow(context.lookup("java:comp/env/t ransaction"), TransactionHome.class); Transaction tx = home.create(); tx.begin(); tx.createEntity("tx entity"); tx.setDescription("tx description"); tx.commit(); } catch (Exception e) { e.printStackTrace(); } } } I'm using Orion 1.4.4 and Windows 98. I set transaction-typeBean/transaction-type in the ejb-jar.xml of Transaction Bean and container-transaction description/ method description/ ejb-nameentity/ejb-name method-name*/method-name /method trans-attributeRequired/trans-attribute /container-transaction for Entity bean. When I try to use this I catch the folow exception: java.lang.IllegalArgumentException: No active Transaction at com.evermind.server.ApplicationServerTransactionManager.commit(JAX) at transaction.TransactionBean.commit(TransactionBean.java:127) at Transaction_StatefulSessionBeanWrapper0.commit(Transaction_StatefulSessionBe anWrapper0.java:190) at java.lang.reflect.Method.invoke(Native Method) at com.evermind.server.rmi.bf.do(JAX) at com.evermind.util.f.run(JAX) Any ideas. Thanks, Esteban
RE: Distributed Transaction without EJB.
I'm not sure for JTS. I suspect maybe with CORBA, but I've never thought about it. Theoretically? Yes. In J2EE? No. Servlets are designed for fast, stateless, dynamic processing. Distributed transactions require a transaction manager and resource managers. The key to having them work is the transaction manager, which ensures the coordination of the distributed resources involved. As long as you can communicate your desires and maintain state from servlets to the transaction manager, you can have your distributed transactions. As I said, servlets weren't designed to maintain state, so they aren't the best candidate for this sort of thing (but when does that ever stop an architecture from being built? -- I know, snide remark). I'm sure there are non-EJB transaction managers out there that can handle interaction with servlets via RMI or CORBA. JTS is an implementation of a transaction manager that supports CORBA's OTS and X/Open's JTA. I don't know if that would allow you to do what you're asking. JTS is not officially part of J2EE, so I haven't had to deal with it personally. Scott Stirling West Newton, MA -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Winston Ng Sent: Tuesday, December 12, 2000 6:58 PM To: Orion-Interest Subject: Distributed Transaction without EJB. Hi All, Is it possible to perform distributed transaction using JTA/JTS from a servlet without using EJB at all? From reading some of the past posting, one of the benefits of using EJB over Servlets is that EJB can provide distributed transaction but not servlets. However, isn't it true that the feature is provided via JTA/JTS and therefore can be provided using servlets??? Thanks Winston
RE: EJB2.0 Generated class uncompilable
Take the version you have and do: cd $ORION_HOME java -jar autoupdate.jar This will pull down the latest released build from Orion. Pretty sweet feature. Scott Stirling West Newton, MA -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Serge Knystautas I'm somewhat new to Orion (I've walked through all the examples and am using it to learn EJB 2.0), and was curious where you can get the 1.4.4 version? I assume this is beta or worse quality non-public release, which I'm more than happy to use, and any directions as to how to get advanced releases would be appreciated. Serge Knystautas Loki Technologies http://www.lokitech.com/
Orionserver.com down??
What's up with www.orionserver.com? It's been down all day. Scott Stirling West Newton, MA
RE: Running two instances of Orion on the same IP and port
Title: Running two instances of Orion on the same IP and port This has nothing to do with Orion per se. It's a fact of life that only one processat a time can bind to a port on a host. For example, say you had Orion bound to port 25 along with your email server. Who would try tohandle SMTP requests to port 25? Orion or the mail server? The answer is whoever bound the port first. And once a process has bound to a critical port (such as a Web server binding to port 80), it usually doesn't "let go" until the process is stopped. Scott Stirling West Newton, MA -Original Message-To: Orion-InterestSubject: Running two instances of Orion on the same IP and port Orioners, Has anyone ever tried to run two instances of Orion on the same machine, IP and port. What I am trying to do is have a second instance of Orion listen to only certain virtual hosts (headers) and the first pick up any unknown or blank headers. The reason for us doing it this way is to have a test installation of Orion that will be restarted often and a second 'stable 'installation that will run some ancillary sites for our internal network. I know that binding a second IP to the box and having the second Orion listen on that IP would probably work. Is there an obvious reason that the way I am attempting always gives me an "Error starting HTTP server: Address already in use" error on the second instance? thanx, Larry
RE: Custom Tags Bug? Please help...
It is. It's so obvious it can easily be overlooked: For example: public class Foo extends Object { } How do you get a class to compile that has a field named 'class'? I couldn't do it. The normal convention is to use the field name 'clazz' when you mean 'class' in Java. One thing to check is that the type of this variable is the same when its set(Type t) and get(){ return Type t;} methods are called, and that you aren't mixing types with a 1.3 JVM. The 1.3 JVM is stricter about some of the JavaBean conventions. Scott Stirling -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Duffey, Kevin Sent: Wednesday, November 15, 2000 4:03 PM To: Orion-Interest Subject: RE: Custom Tags Bug? Please help... I would think class is a reserved word in java. For example MyClass.class refers to the Class of the class. I would rename it from class to myClass or something. Same for your getter/setter methods. -Original Message- From: Claudio Cordova [mailto:[EMAIL PROTECTED]] Sent: Wednesday, November 15, 2000 9:55 AM To: Orion-Interest Subject: Custom Tags Bug? Please help... Hello, I have questions about custom tags, I don't know for sure they are bugs but they seem like it. BUG #1 I have a custom tag with a required attribute called "class". When I use it in a page the compiler displays an error like: 500 Internal Server Error Error parsing JSP page /webdev/advtags/forTag.jsp line 13 Property 'class' of bean/tag 'com.taglib.wdjsp.mut.ForPropertyTag' is read only The tag has a "setClass" method. Why is this happening? If I change the attribute name to anything else it works! BUG #2 The method "isValid" from the TagExtraInfo class is getting called as many times as there are attributes in the tag...Each time the TagData object has one more attribute value? Is this correct?
RE: DeadlockException
Does Orion do more than check a timeout value for deadlock detection? Some servers just assume a deadlock if a method call takes too long. That's the simplest type of deadlock detection. Anyway, I use CtrlPause/Break to get a stack dump on Windows (i.e, I don't think CtrlScrLk will work, will it?). The Ctrl\ combo also works on both Windows and UNIX. A real stack dump from the JVM will tell you more about what K-5 and E-6 are, and show you a call stack for the two threads that are deadlocked. So did the Orion server print out that deadlock info, or was that somehow percolated from the JVM? That's interesting. You're extremely lucky if the JVM detects a deadlock for you, which it sometimes does. Having spent many hours wading through stack dumps from problem apps and buggy JVMs, I think if you have the exact deadlock info like you do below (thread A is locking resource x and thread B is locking resource y, etc.) you're pretty darn fortunate. Lots of times that deadlocks occur, JVMs don't detect it. Disable JIT when before you try to catch this in a stack dump, or else you won't be able to see the line numbers in the stack traces. Scott Stirling -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Mike Clark Sent: Tuesday, November 14, 2000 2:23 PM To: Orion-Interest Subject: Re: DeadlockException Ah, nothing quite like two threads in a deadly embrace! At least the server detects the deadlock and prints some useful debug for deadlock situations. Try generating a VM dump using Windows: Ctrl Scroll Lock *nix : kill -QUIT server process id In general, you're looking for a thread in the MW state that has already locked a monitor on which some other MW thread is trying to synchronize. In your case, thread 5 and thread 6 are deadlocked, both waiting to synchronize on a monitor held by the other. The stack trace information may help you determine where the deadlock is occurring. Mike --- Thomas Hertz [EMAIL PROTECTED] wrote: Hello, AC Does anyone know what the following error means? AC 11/14/00 10:51 PM Error in bean com.netregistry.aucom.accounting.BillingAccount: AC Error in ejbPassivate AC com.evermind.server.DeadlockException: Deadlock detected: thread 11 is waiting for AC resource entity 1003 held by thread 11 AC Any ideas on how to track it down? Just ten minutes before I read this message I encountered the same error in my application. (1.4.4) com.evermind.server.rmi.OrionRemoteException: Transaction was rolled back: com.evermind.server.DeadlockException: thread 6 is waiting for resource entity K-5 held by thread 5 in transaction [Transaction 4d:1:0:0:0:0:0:0:0:e2:0:e2:d4:67:89:da] who is waiting for resource entity E-6 held by thread 6 in transaction [ Transaction 4a:1:0:0:0:0:0:0:0:e2:0:e2:d4:67:89:93]; nested exception is: I am not quite sure what that means exactly. Can anybody help us? Thanks in advance, /Thomas
RE: XSLT processors
Oh, you caught that! I thought it might slip by after I sent it and realized it myself. Yes, I did get it right in the book. More pluses/minuses on Xerces and Xalan: Xalan Java is the XSLT processor, which was 843 KB last time I checked. It depends on Xerces by default, which was/is around 1.5 MB. The plus is that you can use Xalan with other XML parsers that support DOM 2/SAX 1. Scott -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Christian Sell Sent: Thursday, October 12, 2000 3:10 AM To: Orion-Interest Subject: Re: XSLT processors To my knowledge, Xerces is an XML parser, and Xalan does the XSLT stuff. Hope you got that right in your book :-).
RE: HARDWARE FOR J2EE apps
Why would you use mySQL over Postgresl? They're both free, but Postgresql has a JDBC driver that's XA-compliant. Also, mySQL is known to blow away your whole database if it has a bad crash, whereas Postgresql is better at persisting data through a bad crash. How does Interbase 6 compare to Postgresql? Is it free? Scott Stirling West Newton, MA -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Duffey, Kevin Sent: Wednesday, October 11, 2000 4:01 PM To: Orion-Interest Subject: RE: HARDWARE FOR J2EE apps Hi, sounds very nice but what about the database? how do you cluster that without spending an arm and a leg? our experience is, that it's not that hard to set up clustered web services with static pages and servlets but the really expensive part is, when you want that high availability for your database. it doesn't buy you much if you have highly available ejbs when the database server goes down. many people use clustered apache/jserv on linux and cheap pc-hardware for high volume transactional websites but have a large enterprise sun running oracle in the back. anyone out there running a configuration with orion that includes a database with failover that doesn't blow up the budget too much (compared to other components)? Well, to start off with there is mySQL and the one I like the most is Interbase 6..a free powerful RDBMS. However, as far as clustering them..I don't quite know the best way. I would think a load-balancer or a switch or something, would be required. Nobody ever said it was cheap! ;) I used to think $25,000 could easily set up a website from front to back, software, hardware, etc..but not even close these days. If you are just starting out, I would use Orion for front-end and ejb-logic tiers in a clustered environment (for developing/testing), with a single server running mySQL or Interbase for the database. Once you get some funding and move beyond the concept phase, you should put a sizeable chunk to invest in co-locating your site and doing the full load-balancing setup. I would estimate a cheap setup with 2 front-end web/servlet servers failed over, 2 ejb servers, and a database cluster will still run around $100,000, to co-lo it..which is probably the best thing to do to make sure its up 24/7.
RE: XSLT processors
You'll probably get lots of replies on this, and I'm no XSLT guru by any means, but I have some words. 1. When you write your XSLT sheets, you can specify a few output helper methods: xsl:output method="html" indent="yes" omit-xml-declaration="yes"/ 2. You determine in your XSLT what rules and replacements happen to the input data. If you input XML and you want to output HTML or WML or Java (BTW, this is how JRun creates servlets from JSPs: JSP parsed to--XML--apply XSLT-- get Java) or whatever, you match up expected input XML elements in your XSLT, and specify template data that you want to replace the XML element (at least this is the easy way to do it): Here's a section of XSLT where I am matching against incoming RSS XML elements (channel, title, and item) and outputting an HTML table of that data: xsl:template match="channel" table border="1" cellpadding="2" cellspacing="0" tr bgcolor="#aa" td b font size="+1" color="#ff" xsl:value-of select="title"/ /font /b /td /tr tr td xsl:apply-templates select="item"/ /td /tr /table /xsl:template Usually you use these XSLT engines by instantiating an instance of the engine or an interface to it, and passing XML, XSL, and an instance of an OutputStream to one or many constructors/methods. The engine takes the two input sources, does its magic, and spits out the output to the out stream of your choice. I used Xerces to write a custom tag for a JSP book I co-wrote that's coming out in a month or so. The tag looks like this on a JSP, for example: synd:rdf rdfURL="http://www.slashdot.org/slashdot.rdf" xslURI="xml/rdf092.xsl"/ It's slowed by the initial request for the RDF page, but if you have all your XML and XSL local or in a database, this stuff goes much quicker (but doing syndication will always require someone/something to hit the Web for updates). The code is very simple and just uses the Xerces APIs to do the processing. You could also include the dynamic XML output of one JSP into another JSP or servlet, which could then call XSLT engine APIs and a stylesheet to convert the XML to another type of data. My main beef about Xerces is that it's 1.5 MB. That's way too big if all you want is a fast, light XSLT engine. But its' free and it's got features and it works well and its very easy to use. James Clark has a lightweight XSLT processor: http://jclark.com/xml/xt.html Here are some other pointers: Producing HTML tables with XSLT http://www.cogsci.ed.ac.uk/~dmck/xslt-tutorial.html List of Books, articles and papers: http://www.oasis-open.org/cover/xsl.html#articles See in particular the free online stuff from the "XSLT Programmer's Reference," By Michael Kay. Lots of free code and examples you can download. I've also found the Cocoon XSL examples from xml.apache.org to be helpful. Scott Stirling West Newton, MA -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Duffey, Kevin Sent: Wednesday, October 11, 2000 3:57 PM To: Orion-Interest Subject: RE: XSLT processors I would be interested in knowing how to even use an XSLT engine! I know I can get JSP to output XML with a header, but how do I actually pass the XML to the XSLT engine, and how do I specify I want HTML or WML output? Is it a servlet, and you just call upon it somehow from a JSP page or when a request is made, inside you grab the page using a URL connection to get XML output from the JSP page, then pass it on to an XSLT engine somehow? I guess I should buy a book on this topic..but I was hoping it would be easy enough to figure out. Thanks.