Re: Errors while deploying EAR on Geronimo 1.1
At the moment this will work. Geronimom 1.1 doesn't use the Class-Path from the EAR. So you have to put them into the WEB_INF/lib. Does this count as a bug then ? Target www.targetgroup.net ** DISCLAIMER. This message is intended only for the use of the Addressee and may contain information that is PRIVILEGED and CONFIDENTIAL. If you are not the intended recipient you must not copy, distribute or take any action or reliance upon it. The content of this message may also contain personal views of an employee of this company and does not necessarily represent the view of the company. ** This message has been scanned by Norton Anti-Virus. It has also been scanned by MAILsweeper to enforce our e-mail policy. If you have any concerns or comments about the content of this message, please e-mail [EMAIL PROTECTED] ** _ This email has been scanned for all viruses by the MessageLabs Email Security System. For more information on a proactive email security service working around the clock, around the globe, visit http://www.messagelabs.com
Re: Errors while deploying EAR on Geronimo 1.1
Current status of this is if you have an ejb jar file in the ear and this is a module in the application.xml, the classloader will find all classes in other libraries (jars) in the ear. An empty jar is sufficient for that. further reading here: http://issues.apache.org/jira/browse/GERONIMO-2125?page=all Thanks, Mario [EMAIL PROTECTED] wrote: At the moment this will work. Geronimom 1.1 doesn't use the Class-Path from the EAR. So you have to put them into the WEB_INF/lib. Does this count as a bug then ? Target www.targetgroup.net ** DISCLAIMER. This message is intended only for the use of the Addressee and may contain information that is PRIVILEGED and CONFIDENTIAL. If you are not the intended recipient you must not copy, distribute or take any action or reliance upon it. The content of this message may also contain personal views of an employee of this company and does not necessarily represent the view of the company. ** This message has been scanned by Norton Anti-Virus. It has also been scanned by MAILsweeper to enforce our e-mail policy. If you have any concerns or comments about the content of this message, please e-mail [EMAIL PROTECTED] ** _ This email has been scanned for all viruses by the MessageLabs Email Security System. For more information on a proactive email security service working around the clock, around the globe, visit http://www.messagelabs.com
Re: Geronimo clustering
Krish, A few things to check.. 1) jvmRoute is unique for each node 2) The value used in jvmRoute agrees with the value set in the mod-jk configuration (e.g. jvmRoute=node1, jvmRoute=node2, and worker.loadbalancer.balance_workers=node1,node2, worker.node1.port=8009, etc.) 3) Deployment plan for each node has the correct IP address for each node (in 2 spots in the xml) 4) You are using the most recent deployment *5.5.15* deployment plan that includes JVMRouteBinderValve... Latest plan and instructions available at: http://cwiki.apache.org/GMOxDOC11/clustering.html 5) Verify that both machines are truly on the same subnet.. Both machines should use the same subnet mask. The network portion of the addresses should be identical when the subnet mask is bitwise ANDed with each of the individual IP addresses. 6) You are using the same browser instance for the whole test. Clear the cookie cache in the browser before the test. -Dave- Krishnakumar B wrote: hi, Have set the required properties in app, jvmRoute etc.. The log shows this 16:46:03,810 INFO [JvmRouteBinderValve] JvmRouteBinderValve started 16:46:04,175 INFO [DeltaManager] Register manager /servlet-examples-cluster to cluster element unknown with name /servlet-examples-cluster 16:46:04,176 INFO [DeltaManager] Starting clustering manager at /servlet-examples-cluster 16:46:04,176 INFO [DeltaManager] Manager [/servlet-examples-cluster]: skipping state transfer. No members active in cluster group. Does this message mean something is not correct. 16:46:04,176 INFO [DeltaManager] Manager [/servlet-examples-cluster]: skipping state transfer. No members active in cluster group. I still get only 1 value replicated. Regards Krish On 7/10/06, Santosh Koti [EMAIL PROTECTED] wrote: Hi Krishna, Well , can u do this way: 1) Stop both ur servers 2) Start server server1 3) Aftter server server1 is up, start ur server 2 4) in ur server2 startup console, u should something like deltamanager[/contextroot]... 5)Chk ur app...? 6) Have u set jvmroute in config.xml of server2..? PS: U shd not get smething like jvmRoute2 bind /whatever else...?!! Thanks, Santosh. Don't talk about yourself; it will be done when you leave. -Original Message- From: Krishnakumar B [mailto:[EMAIL PROTECTED] Sent: Monday, July 10, 2006 3:55 PM To: user@geronimo.apache.org Subject: Geronimo clustering Hi, I am trying out geronimo clustering example. I seem to have a problem with Session Failover. I am using Apache HTTP server 2.0.58 and mod_jk 1.2.15 and geronimo 1.1 I create two session variables in server 1 - server1-1 = 1 server1-2 = 2 I stop server1. Only server1-2 = 2 replicated in server 2. Now i add a new variable in server2 server2-1 = 1 Now i start server1 Now i stop server2 I should have server1-1=1, server1-2=2 and server2-1=1 in server1 Instead i have only server2-1=1 in server1 I am not sure if i am doing something wrong. I have set jvmRoute in config.xml, given correct IP address in cluster application plan and setup workers.properties. I get these messages in server2 15:38:37,452 WARN [JvmRouteBinderValve] No engine jvmRoute attribute configured! and 15:30:57,791 INFO [DeltaManager] Manager [/servlets-examples-cluster]: skipping state transfer. No members active in cluster group. though both members of cluster are up and i am able to ping both machines. there are in same subnet. Thanks for any pointers... Regards Krish CAUTION - Disclaimer * This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. Infosys has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. Infosys reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this e-mail address may be stored on the Infosys e-mail system. ***INFOSYS End of Disclaimer INFOSYS***
Re: Geronimo clustering
hi Dave, Thanks for ur note. I have done these checks. I get these messages in second cluster member where failover occurs. 14:53:21,003 INFO [DeltaManager] Manager [/servlets-examples-cluster]: skipping state transfer. No members active in cluster group. 15:10:34,700 WARN [JvmRouteBinderValve] No engine jvmRoute attribute configured 15:10:34,720 WARN [JvmRouteBinderValve] No engine jvmRoute attribute configured Does this mean something is wrong? I get one session value failover to second server. All cluster members are active. Regards Krish I have configured jvmRoute On 7/11/06, Dave Colasurdo [EMAIL PROTECTED] wrote: Krish, A few things to check.. 1) jvmRoute is unique for each node 2) The value used in jvmRoute agrees with the value set in the mod-jk configuration (e.g. jvmRoute=node1, jvmRoute=node2, and worker.loadbalancer.balance_workers=node1,node2, worker.node1.port=8009, etc.) 3) Deployment plan for each node has the correct IP address for each node (in 2 spots in the xml) 4) You are using the most recent deployment *5.5.15* deployment plan that includes JVMRouteBinderValve... Latest plan and instructions available at: http://cwiki.apache.org/GMOxDOC11/clustering.html 5) Verify that both machines are truly on the same subnet.. Both machines should use the same subnet mask. The network portion of the addresses should be identical when the subnet mask is bitwise ANDed with each of the individual IP addresses. 6) You are using the same browser instance for the whole test. Clear the cookie cache in the browser before the test. -Dave- Krishnakumar B wrote: hi, Have set the required properties in app, jvmRoute etc.. The log shows this 16:46:03,810 INFO [JvmRouteBinderValve] JvmRouteBinderValve started 16:46:04,175 INFO [DeltaManager] Register manager /servlet-examples-cluster to cluster element unknown with name /servlet-examples-cluster 16:46:04,176 INFO [DeltaManager] Starting clustering manager at /servlet-examples-cluster 16:46:04,176 INFO [DeltaManager] Manager [/servlet-examples-cluster]: skipping state transfer. No members active in cluster group. Does this message mean something is not correct. 16:46:04,176 INFO [DeltaManager] Manager [/servlet-examples-cluster]: skipping state transfer. No members active in cluster group. I still get only 1 value replicated. Regards Krish On 7/10/06, Santosh Koti [EMAIL PROTECTED] wrote: Hi Krishna, Well , can u do this way: 1) Stop both ur servers 2) Start server server1 3) Aftter server server1 is up, start ur server 2 4) in ur server2 startup console, u should something like deltamanager[/contextroot]... 5)Chk ur app...? 6) Have u set jvmroute in config.xml of server2..? PS: U shd not get smething like jvmRoute2 bind /whatever else...?!! Thanks, Santosh. Don't talk about yourself; it will be done when you leave. -Original Message- From: Krishnakumar B [mailto:[EMAIL PROTECTED] Sent: Monday, July 10, 2006 3:55 PM To: user@geronimo.apache.org Subject: Geronimo clustering Hi, I am trying out geronimo clustering example. I seem to have a problem with Session Failover. I am using Apache HTTP server 2.0.58 and mod_jk 1.2.15 and geronimo 1.1 I create two session variables in server 1 - server1-1 = 1 server1-2 = 2 I stop server1. Only server1-2 = 2 replicated in server 2. Now i add a new variable in server2 server2-1 = 1 Now i start server1 Now i stop server2 I should have server1-1=1, server1-2=2 and server2-1=1 in server1 Instead i have only server2-1=1 in server1 I am not sure if i am doing something wrong. I have set jvmRoute in config.xml, given correct IP address in cluster application plan and setup workers.properties. I get these messages in server2 15:38:37,452 WARN [JvmRouteBinderValve] No engine jvmRoute attribute configured! and 15:30:57,791 INFO [DeltaManager] Manager [/servlets-examples-cluster]: skipping state transfer. No members active in cluster group. though both members of cluster are up and i am able to ping both machines. there are in same subnet. Thanks for any pointers... Regards Krish CAUTION - Disclaimer * This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. Infosys has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. Infosys reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this
RE: Setting transaction isolation level in TranQL
Hi, Matt, Is there any news on TranQL 1.3.1 ? :) Any hope for us to see it in, for example, Geronimo 1.1.1 ? Thank you! Vasily -Original Message- From: Matt Hogstrom [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 07, 2006 12:19 PM To: user@geronimo.apache.org Subject: Re: Setting transaction isolation level in TranQL I cut Tranql 1.3 last night1.3.1 will have this support soon :) Zakharov, Vasily M wrote: Ooh. So for now there's completely no way I can provide the application with the isolation level other than read-uncommitted? When can we expect that TranQL 1.3.1 to appear? :) Until then, is there a way to pass some SQL statements to the database through the connector? By the way, isn't there a J2EE specification requirement of the ability to set isolation levels on connectors? Vasily -Original Message- From: Matt Hogstrom [mailto:[EMAIL PROTECTED] Sent: Wednesday, May 31, 2006 9:55 PM To: user@geronimo.apache.org Subject: Re: Setting transaction isolation level in TranQL This is a feature I'm looking to put into TranQL 1.3.1 as well as allowing the ability to set the default Isolation Level for a DataSource. Zakharov, Vasily M wrote: Hi, all, Can I somewhat configure the entity (or connector) to use a particular Transaction Isolation level? Stanley Bradbury recently described how it can be done with SQL query to Derby, but how can I do that while working through a TranQL connector? Thank you! Vasily Zakharov Intel Middleware Products Division
Re: Setting transaction isolation level in TranQL
On Jul 11, 2006, at 11:49 AM, Zakharov, Vasily M wrote: Hi, Matt, Is there any news on TranQL 1.3.1 ? :) Any hope for us to see it in, for example, Geronimo 1.1.1 ? Vasily, The current builds of Geronimo 1.1.1-SNAPSHOT are using TranQL 1.3.1- SNAPSHOT. I don't know rather or not it has the changes which Matt refers to... TranQL 1.3.1 would be released just prior to the release of G 1.1.1. So, we should see it fairly soon. Right Matt? :-) --kevan Vasily -Original Message- From: Matt Hogstrom [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 07, 2006 12:19 PM To: user@geronimo.apache.org Subject: Re: Setting transaction isolation level in TranQL I cut Tranql 1.3 last night1.3.1 will have this support soon :) Zakharov, Vasily M wrote: Ooh. So for now there's completely no way I can provide the application with the isolation level other than read-uncommitted? When can we expect that TranQL 1.3.1 to appear? :) Until then, is there a way to pass some SQL statements to the database through the connector? By the way, isn't there a J2EE specification requirement of the ability to set isolation levels on connectors? Vasily -Original Message- From: Matt Hogstrom [mailto:[EMAIL PROTECTED] Sent: Wednesday, May 31, 2006 9:55 PM To: user@geronimo.apache.org Subject: Re: Setting transaction isolation level in TranQL This is a feature I'm looking to put into TranQL 1.3.1 as well as allowing the ability to set the default Isolation Level for a DataSource. Zakharov, Vasily M wrote: Hi, all, Can I somewhat configure the entity (or connector) to use a particular Transaction Isolation level? Stanley Bradbury recently described how it can be done with SQL query to Derby, but how can I do that while working through a TranQL connector? Thank you! Vasily Zakharov Intel Middleware Products Division
How to get 1.1 sources?
Hi, all, Excuse me, what is the right way to get the sources for Geronimo 1.1? I mean the exact sources used to build the 1.1 release, not the current trunk. Thank you! Vasily Zakharov Intel Middleware Products Division
Re: How to get 1.1 sources?
On Jul 11, 2006, at 12:36 PM, Zakharov, Vasily M wrote: Hi, all, Excuse me, what is the right way to get the sources for Geronimo 1.1? I mean the exact sources used to build the 1.1 release, not the current trunk. From svn: svn co https://svn.apache.org/repos/asf/geronimo/tags/1.1.0 From Geronimo Download site: http://geronimo.apache.org/downloads.html --kevan
Re: Entity bean can not remove itself
It has been a long time since I looked at this stuff, but I'm not sure an entity can remove itself. The one thing I know for certain, is that calling the ejbRemove remove method has not effect on the entity state. The ejbRemove method is a callback invoked by the entity container when the entity container has decided to remove the entity. If you call this method directly, the entity container does not see this. After reviewing the 2.1 spec, I can't see any where that specifies that entity can remove itself. Every remove example, has another bean removing the target bean. At the very least, I'd start by marking the entity as reentrant since a remove is conceivably reentrancy. Then I'd try, entityContext.getEJB[Local]Object().remove() -dain On Jul 10, 2006, at 10:56 PM, D. Strauss wrote: Hello, Markus try this: Way a (the Collection way): java.util.CollectionEjbLocal c=ejbHome.findAll(); EjbLocal delBean=null; for(EjbLocal l : c){ //find the bean you want to remove: for now, find the last one delBean=l; } c.remove(delBean); Way b (the usual way): EjbLocal delBean=ejbHome.findByPrimaryKey(12); delBean.remove(); Best regards Dirk mahu2425 schrieb: Hello Dirk, I'm not sure what you mean by collection version of ejbRemove(). Could you please explain it a little bit more? Thank in advance, Markus Hello, Markus now I get it ^^ (at least I think so) So, to summarize it: you work with a CMP bean that is used by various other beans (JMS in particular). After all things have been done I want to remove the bean? Using ejbRemove() is OK but you may want to use the Collection version of ejbRemove. I think (if I remember correctly) that ejbRemove() always crashed the EJB container. So I used the collection method. It is a little bit difficult but it worked. Give it a try and tell us if it works. Best regards Dirk Schnell und einfach ohne Anschlusswechsel zur Lycos DSL Flatrate wechseln und 3 Monate kostenlos ab effektiven 5,21 EUR pro Monat im ersten Jahr surfen. http://www.lycos.de/startseite/online/dsl/index.html? prod=DSLtrackingID=email_footertxt
Open-EJB application client problem
Hi All,I have successfully deployed an application with session bean in geronimo1.1 However when I try to lookup the session bean from a client application,jndiname (java:comp/env/ejb/StoreLocal) was not bound.In the geronimoserver console following error was displayed.23:09:13,812 ERROR [JndiRequestHandler] JNDI request errorjava.lang.IllegalArgumentException: uri path must be in the form [groupId]/[artifactId]/[version]/[type] : /java:comp/env/ejb/StoreLocal at org.apache.geronimo.gbean.AbstractNameQuery.init(AbstractNameQuery.java:104) at org.openejb.ContainerIndex.getContainerIndex(ContainerIndex.java:208) at org.openejb.ContainerIndex$$FastClassByCGLIB$$6674ccb6.invoke(generated) at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122) at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817) at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57) at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35) at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96) at org.openejb.ContainerIndex$$EnhancerByCGLIB$$4d03a4f9.getContainerIndex(generated) at org.openejb.server.ejbd.JndiRequestHandler.doLookup(JndiRequestHandler.java:178) at org.openejb.server.ejbd.JndiRequestHandler.processRequest(JndiRequestHandler.java:115) at org.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:154) at org.openejb.server.ejbd.EjbServer.service(EjbServer.java:87) at org.openejb.server.ejbd.EjbServer$$FastClassByCGLIB$$d379d2ff.invoke(generated) at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122) at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817) at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57) at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35) at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96) at org.activeio.xnet.ServerService$$EnhancerByCGLIB$$9ba58c2.service(generated) at org.activeio.xnet.ServicePool$2.run(ServicePool.java:67) at org.activeio.xnet.ServicePool$3.run(ServicePool.java:90) at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:172) at org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:289) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Thread.java:595)I have put following jar filesin the classpath.geronimo-kernel-1.1-SNAPSHOT.jar geronimo-spec-j2ee-1.4-rc4.jar openejb-core-2.0-SNAPSHOT.jar cglib-nodep-2.1.jar geronimo-security-1.1-SNAPSHOT.jarCan anybodysuggesta solution for this problem?Thank You, regards, Isuru Want to be your own boss? Learn how on Yahoo! Small Business.
Re: Open-EJB application client problem
It looks to me as if you are using a non-j2ee app client but trying to use jndi as if it is a j2ee app client. From a non-j2ee-app-client you have to look up whatever you specify as jndi-name in the openejb config, and you have to use the proprietary jndi configuration for openejb jndi. In particular you shouldn't be looking in java:comp unless you have a j2ee client. Can you clarify what you are trying to do?thanksdavid jencksOn Jul 11, 2006, at 11:14 AM, Isuru Samaraweera wrote:Hi All, I have successfully deployed an application with session bean in geronimo1.1 However when I try to lookup the session bean from a client application,jndi name (java:comp/env/ejb/StoreLocal) was not bound.In the geronimoserver console following error was displayed. 23:09:13,812 ERROR [JndiRequestHandler] JNDI request errorjava.lang.IllegalArgumentException: uri path must be in the form [groupId]/[artifactId]/[version]/[type] : /java:comp/env/ejb/StoreLocal at org.apache.geronimo.gbean.AbstractNameQuery.init(AbstractNameQuery.java:104) at org.openejb.ContainerIndex.getContainerIndex(ContainerIndex.java:208) at org.openejb.ContainerIndex$$FastClassByCGLIB$$6674ccb6.invoke(generated) at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122) at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817) at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57) at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35) at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96) at org.openejb.ContainerIndex$$EnhancerByCGLIB$$4d03a4f9.getContainerIndex(generated) at org.openejb.server.ejbd.JndiRequestHandler.doLookup(JndiRequestHandler.java:178) at org.openejb.server.ejbd.JndiRequestHandler.processRequest(JndiRequestHandler.java:115) at org.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:154) at org.openejb.server.ejbd.EjbServer.service(EjbServer.java:87) at org.openejb.server.ejbd.EjbServer$$FastClassByCGLIB$$d379d2ff.invoke(generated) at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53) at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38) at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122) at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817) at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57) at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35) at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96) at org.activeio.xnet.ServerService$$EnhancerByCGLIB$$9ba58c2.service(generated) at org.activeio.xnet.ServicePool$2.run(ServicePool.java:67) at org.activeio.xnet.ServicePool$3.run(ServicePool.java:90) at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:172) at org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:289) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Thread.java:595) I have put following jar files in the classpath. geronimo-kernel-1.1-SNAPSHOT.jar geronimo-spec-j2ee-1.4-rc4.jar openejb-core-2.0-SNAPSHOT.jar cglib-nodep-2.1.jar geronimo-security-1.1-SNAPSHOT.jar Can anybody suggest a solution for this problem? Thank You, regards, Isuru Want to be your own boss? Learn how on Yahoo! Small Business.