Re: form submits empty values if it was dynamically refreshed with AJAX
void onValidateForm() { try { Logger.getLogger(this.getClass()).debug(**onValidateForm); this.version = versionService.updateObjectCfg(objectDetail); } catch (Exception e) { // Display the cause. In a real system we would try harder to get a user-friendly message. form.recordError(e.getMessage()); } } Form submissions through AJAX only work if your onValidateForm() return the zone's body when some validation error is found. Use this code as example: if (form.getHasErrors() request.isXHR()) { return zonaFormulario.getBody(); } else { return null; } this doesn't matter as I dont care about errors right now. and I dont need to persist my object as all information are in the form. so on submit I will have them back. You'll need to @Inject the Request. why you think I should inject that!?? but that doesnt explain why form sends empty values if I use ajax refresh from the link and works fine if I refresh whole page!!! I have small example that can be ran to reproduce the problem if someone is interested!
Re: How to decorate a service that has already been decorated ?
Actually, this OWASP rule does not exclude access checking. But using temporary indirection keys has also effects on CSRF attacks. 2010/2/3 Thiago H. de Paula Figueiredo thiag...@gmail.com On Tue, 02 Feb 2010 19:21:22 -0200, Howard Lewis Ship hls...@gmail.com wrote: Intresting. So perhaps instead of encoding the primary key of a Hibernate entity directly, you'd instead maintain a lookup combining user id and object id, mapped to a random string. The random string would have to be in some kind of fast lookup table stored persistently (perhaps in the DB for sharing across the cluster, if any). Is the overhead worth it? As attackers car intercept the URLs, you still need to check if the user can access that data. Anyway, that's the kind of idea that popped into my head ... what's your solution looking like? Not 100% related, but I created an ActivationContextEncoderT interface and corresponding ActivationContextEncoderSource service. This way, I can have the logic for generating the activation context value for a given type separate from its ValudeEncoder logic. The above pseudo-id lookup logic above could be implemented in a reusable way with ActivationContextEncoder. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: How to decorate a service that has already been decorated ?
Hi Because not all our team are using Tapestry-hibernate, i have implemented the solution with contributions to tapestry-core. I have decorated the ContextValueEncoder and ComponentEventLinkEncoder for link generation and request decoding. The developper specify if he wants to indirect activation/event context parameters by providing an annotation @HideDirectReference on its page. Also, i had to implement a ComponentRequestFilter to check if parameters must be decode with indirection map in function of the targeted resource. To implement the indirection map, at the moment i have used this API http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/index.html that is suggested by OWASP fundation. But it contains a lot of thing that Tapestry does by default. So i think that i will switch to a custom implementation based on Tapestry Strategy pattern that will be more flexible for exemple to handle cluster environment as you mention id. BTW two implementations already exists a simple algorithm based on Integer and another based on random key generation that has more effects on CSRF attacks. Also, i will investigate on the solution suggested by Thiago to handle different type of key generation policies. Best Regards, Christophe. 2010/2/2 Howard Lewis Ship hls...@gmail.com Intresting. So perhaps instead of encoding the primary key of a Hibernate entity directly, you'd instead maintain a lookup combining user id and object id, mapped to a random string. The random string would have to be in some kind of fast lookup table stored persistently (perhaps in the DB for sharing across the cluster, if any). Anyway, that's the kind of idea that popped into my head ... what's your solution looking like? On Tue, Feb 2, 2010 at 10:42 AM, cordenier christophe christophe.corden...@gmail.com wrote: An old link http://www.owasp.org/index.php/Top_10_2007-Insecure_Direct_Object_Referencebut principle is there. 2010/2/2 cordenier christophe christophe.corden...@gmail.com OWASP A4 is : Avoid Insecure Direct Object References (in URL in my case) Suggested implementation is to indirect all direct reference to entity ids for exemple. BTW The solution provided by Howard works like a charm, i will add it to my guideline. Thanks again, Christophe. 2010/2/2 Thiago H. de Paula Figueiredo thiag...@gmail.com On Tue, 02 Feb 2010 16:08:41 -0200, cordenier christophe christophe.corden...@gmail.com wrote: Actually i am trying to decorate ComponentEventLinkEncoder to implement a solution for OWASP A4 recommandation. Which recommendation? Just curious. :) -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: form submits empty values if it was dynamically refreshed with AJAX
and the form itself is working ok as I return the body of the zone in onSuccess or onFail callbacks pozdrawiam Paweł Kamiński kami...@gmail.com pkaminski@gmail.com __ On 3 February 2010 09:37, kamiseq kami...@gmail.com wrote: void onValidateForm() { try { Logger.getLogger(this.getClass()).debug(**onValidateForm); this.version = versionService.updateObjectCfg(objectDetail); } catch (Exception e) { // Display the cause. In a real system we would try harder to get a user-friendly message. form.recordError(e.getMessage()); } } Form submissions through AJAX only work if your onValidateForm() return the zone's body when some validation error is found. Use this code as example: if (form.getHasErrors() request.isXHR()) { return zonaFormulario.getBody(); } else { return null; } this doesn't matter as I dont care about errors right now. and I dont need to persist my object as all information are in the form. so on submit I will have them back. You'll need to @Inject the Request. why you think I should inject that!?? but that doesnt explain why form sends empty values if I use ajax refresh from the link and works fine if I refresh whole page!!! I have small example that can be ran to reproduce the problem if someone is interested!
Re: How to decorate a service that has already been decorated ?
Not 100% related, but I created an ActivationContextEncoderT interface and corresponding ActivationContextEncoderSource service. This way, I can have the logic for generating the activation context value for a given type separate from its ValudeEncoder logic. The above pseudo-id lookup logic above could be implemented in a reusable way with ActivationContextEncoder. Interesting solution! I agree that one way or another you can't avoid these checks, so better to find a way to make this code reusable and as generic as possible. My solution was to annotate my pages in order to determine the referenced context variables at runtime, then reuse the checking code in a service injected in a base page/s (or even a dispatcher)... perhaps not as elegant as yours, but its flexible and it works for me. cheers, Peter - Original Message - From: Thiago H. de Paula Figueiredo thiag...@gmail.com To: Tapestry users users@tapestry.apache.org Sent: Wednesday, 3 February, 2010 02:43:11 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: How to decorate a service that has already been decorated ? On Tue, 02 Feb 2010 19:21:22 -0200, Howard Lewis Ship hls...@gmail.com wrote: Intresting. So perhaps instead of encoding the primary key of a Hibernate entity directly, you'd instead maintain a lookup combining user id and object id, mapped to a random string. The random string would have to be in some kind of fast lookup table stored persistently (perhaps in the DB for sharing across the cluster, if any). Is the overhead worth it? As attackers car intercept the URLs, you still need to check if the user can access that data. Anyway, that's the kind of idea that popped into my head ... what's your solution looking like? Not 100% related, but I created an ActivationContextEncoderT interface and corresponding ActivationContextEncoderSource service. This way, I can have the logic for generating the activation context value for a given type separate from its ValudeEncoder logic. The above pseudo-id lookup logic above could be implemented in a reusable way with ActivationContextEncoder. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
T4: forward browser to an external web site
Hello, I'm trying to solve the following problem using T4.1.6. I want to have the user submit a form , perform some operation in the page class and then forward the user to an external web site. Of course I can return to the new user a new page with a form that has an action that points to the web site, but it would be far better to have my page class. I have tried using a service and HttpClient package but it return and HttpResponse and I'm not able to convert it to a WebResponse. Any suggestion? -- == dott. Ivano Mario Luberti Archimede Informatica societa' cooperativa a r. l. Sede Operativa Via Gereschi 36 - 56126- Pisa tel.: +39-050- 580959 tel/fax: +39-050-9711344 web: www.archicoop.it == - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: form submits empty values if it was dynamically refreshed with AJAX
On Wed, 03 Feb 2010 06:37:39 -0200, kamiseq kami...@gmail.com wrote: if (form.getHasErrors() request.isXHR()) { return zonaFormulario.getBody(); } else { return null; } this doesn't matter as I dont care about errors right now. and I dont need to persist my object as all information are in the form. so on submit I will have them back. You should care, because, when you submit a form through AJAX and there are validation errors, the last triggered event is validateForm. Thus, its return value is used to render the zone. If you return nothing (void method) or null, nothing is rendered and your zone is not updated. You'll need to @Inject the Request. why you think I should inject that!?? Because the suggested code above needs it. but that doesnt explain why form sends empty values if I use ajax refresh from the link and works fine if I refresh whole page!!! I know, but I was warning you about the above error. Your problem may be related to how you persist the edited object. I have small example that can be ran to reproduce the problem if someone is interested! Please do it. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: How to decorate a service that has already been decorated ?
On Wed, 03 Feb 2010 07:09:54 -0200, Peter Stavrinides p.stavrini...@albourne.com wrote: Interesting solution! ActivationContextEncoder aand friends are part of the Tapestry CRUD package. If you provide the object access logic, the package invokes it automatically for you. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: form submits empty values if it was dynamically refreshed with AJAX
so here is the code in attachments. I updated the ex so it returns zone's body on onValidateForm and I get full object onPrepareForSubmit. this is simple page with a link, bean display for part of the VO class and with a form. now the link refreshes all the page and zone is updated only through the form submit. If you switch code and make link fires ajax event then object will not be updated in onValidateForm callback. pozdrawiam Paweł Kamiński kami...@gmail.com pkaminski@gmail.com __ -- Forwarded message -- From: kamiseq kami...@gmail.com Date: 3 February 2010 13:51 Subject: Re: form submits empty values if it was dynamically refreshed with AJAX To: thiag...@gmail.com thanks for helping me. I will post this to the thread as well but I dont know if user group accept mails with attachments if you have any questions or advises how my code could be wrote better I will be glad to answer all of them! I updated the ex so it returns zone's body on onValidateForm and I get full object onPrepareForSubmit. this is simple page with a link, bean display for part of the VO class and with a form. now the link refreshes all the page and zone is updated only through the form submit. If you switch code and make link fires ajax event then object will not be updated in onValidateForm callback. pozdrawiam Paweł Kamiński kami...@gmail.com pkaminski@gmail.com __ - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Link to a Page from another context
Hi, I have a PopupPageLink Component that receives a Page path and redirect to the page via : PageRenderLinkSource.createPageRenderLink(). The problem is when i have to redirect to a page from another context, because it tries to find the page within the app context. How can I avoid doing that? I need to pass it through the PopupPageLink. Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com
Re: How to decorate a service that has already been decorated ?
The solution i used is to create the inderiction key at the very end of activation encoding in ContextValueEncoder. I mean just after toClient() call, i get the resulting string and transform it. Then before calling delegated toValue i retrieve the direct reference from the indirection key provided as a parameter to the toValue method. I see this drawback to my approach, it's that i do not have access to many informations about which parameter is decoded, thus disabling for a specific parameter will be hard to implement, i can handle disabling per page. On the other side, this entry point is satisfying for other reason, i manipulate only String no need to define multiple ContextValueEncoders. I have to find a solution between yours (which is more flexible regarding the type of target value) and mine that is fairly simple to implement. Regards, Christophe. 2010/2/3 Thiago H. de Paula Figueiredo thiag...@gmail.com On Wed, 03 Feb 2010 07:09:54 -0200, Peter Stavrinides p.stavrini...@albourne.com wrote: Interesting solution! ActivationContextEncoder aand friends are part of the Tapestry CRUD package. If you provide the object access logic, the package invokes it automatically for you. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Link to a Page from another context
Hi (If application are deployed in the same container) I guess using crossContext feature will allow you to have access to Tapestry Registries of other application contexts. Then you can call PageRenderLinkSource service instance of other context. It depends on the security level you want for your architecture, some prefer to disable crossContext feature. Regards, Christophe. Developer of wooki @wookicentral.com 2010/2/3 Everton Agner everton_ag...@yahoo.com.br Hi, I have a PopupPageLink Component that receives a Page path and redirect to the page via : PageRenderLinkSource.createPageRenderLink(). The problem is when i have to redirect to a page from another context, because it tries to find the page within the app context. How can I avoid doing that? I need to pass it through the PopupPageLink. Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com
Res: Link to a Page from another context
Oh... sorry, I forgot the most important thing. The other app isn't a Tapestry application... De: cordenier christophe christophe.corden...@gmail.com Para: Tapestry users users@tapestry.apache.org Enviadas: Quarta-feira, 3 de Fevereiro de 2010 11:32:14 Assunto: Re: Link to a Page from another context Hi (If application are deployed in the same container) I guess using crossContext feature will allow you to have access to Tapestry Registries of other application contexts. Then you can call PageRenderLinkSource service instance of other context. It depends on the security level you want for your architecture, some prefer to disable crossContext feature. Regards, Christophe. Developer of wooki @wookicentral.com 2010/2/3 Everton Agner everton_ag...@yahoo.com.br Hi, I have a PopupPageLink Component that receives a Page path and redirect to the page via : PageRenderLinkSource.createPageRenderLink(). The problem is when i have to redirect to a page from another context, because it tries to find the page within the app context. How can I avoid doing that? I need to pass it through the PopupPageLink. Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com
Re: Link to a Page from another context
Then i guess you do not need the PageRenderLinkSource. Use simple java.net.URL, also you may generate your URLs via a Service that will allow you to configure different part of URL (host, port...) via Symbol. 2010/2/3 Everton Agner everton_ag...@yahoo.com.br Oh... sorry, I forgot the most important thing. The other app isn't a Tapestry application... De: cordenier christophe christophe.corden...@gmail.com Para: Tapestry users users@tapestry.apache.org Enviadas: Quarta-feira, 3 de Fevereiro de 2010 11:32:14 Assunto: Re: Link to a Page from another context Hi (If application are deployed in the same container) I guess using crossContext feature will allow you to have access to Tapestry Registries of other application contexts. Then you can call PageRenderLinkSource service instance of other context. It depends on the security level you want for your architecture, some prefer to disable crossContext feature. Regards, Christophe. Developer of wooki @wookicentral.com 2010/2/3 Everton Agner everton_ag...@yahoo.com.br Hi, I have a PopupPageLink Component that receives a Page path and redirect to the page via : PageRenderLinkSource.createPageRenderLink(). The problem is when i have to redirect to a page from another context, because it tries to find the page within the app context. How can I avoid doing that? I need to pass it through the PopupPageLink. Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com
Is it possible to have tapestry and other servlets on the same servletContainer?
Hi, I'm using Tapestry for my application and I need to run a simple servlet (Not Tapestry) on the same servletContainer So I try something like that : filter-mapping filter-nameapp/filter-name url-pattern/*/url-pattern /filter-mapping servlet servlet-nameupload/servlet-name servlet-classMyServletClassName/servlet-class /servlet servlet-mapping servlet-nameupload/servlet-name url-pattern/upload/url-pattern /servlet-mapping But it's not working Any idea? Christophe DUFOUR http://www.dooapp.com
Res: Is it possible to have tapestry and other servlets on the same servletContainer?
I believe you have to tell tapestry which Paths it need to ignore it. You can find it here, at the end of the page. http://tapestry.apache.org/tapestry5.1/guide/conf.html De: Christophe DUFOUR christo...@dooapp.com Para: Tapestry users users@tapestry.apache.org Enviadas: Quarta-feira, 3 de Fevereiro de 2010 13:09:03 Assunto: Is it possible to have tapestry and other servlets on the same servletContainer? Hi, I'm using Tapestry for my application and I need to run a simple servlet (Not Tapestry) on the same servletContainer So I try something like that : filter-mapping filter-nameapp/filter-name url-pattern/*/url-pattern /filter-mapping servlet servlet-nameupload/servlet-name servlet-classMyServletClassName/servlet-class /servlet servlet-mapping servlet-nameupload/servlet-name url-pattern/upload/url-pattern /servlet-mapping But it's not working Any idea? Christophe DUFOUR http://www.dooapp.com Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com
Re: Is it possible to have tapestry and other servlets on the same servletContainer?
On Wed, 03 Feb 2010 13:09:03 -0200, Christophe DUFOUR christo...@dooapp.com wrote: Hi, Hi! I'm using Tapestry for my application and I need to run a simple servlet (Not Tapestry) on the same servletContainer Yes, you can! See the Ignored paths section of http://tapestry.apache.org/tapestry5.1/guide/conf.html. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Is it possible to have tapestry and other servlets on the same servletContainer?
Yes, that's exactly what I was looking for. Thank's a lot. Christophe DUFOUR http://www.dooapp.com On Wed, Feb 3, 2010 at 4:16 PM, Thiago H. de Paula Figueiredo thiag...@gmail.com wrote: On Wed, 03 Feb 2010 13:09:03 -0200, Christophe DUFOUR christo...@dooapp.com wrote: Hi, Hi! I'm using Tapestry for my application and I need to run a simple servlet (Not Tapestry) on the same servletContainer Yes, you can! See the Ignored paths section of http://tapestry.apache.org/tapestry5.1/guide/conf.html. -- Thiago H. de Paula Figueiredo Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, and instructor Owner, software architect and developer, Ars Machina Tecnologia da Informação Ltda. http://www.arsmachina.com.br - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
onSelectedFrom is called too late
Hello! I have the following problem: On a page a Grid is displayed inside a form which contains a checkbox for each row (similar to [0]). When I submit the form using one of the submit buttons below, I want to check for each row if the action of the submit button is possible. To achieve this, I extended the Checkbox component to allow validation for checkbox fields. This works, but it happens too early: At first all checkboxes are validated, _then_ the onSelectedFromSubmitButton is called and I do not know which action I should check. Does anyone know a way to achieve this? Is my solution until now overkill? TIA Stephan [0] http://jumpstart.doublenegative.com.au:8080/jumpstart/examples/tables/gridwithdeletecolumn1 - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T4: forward browser to an external web site
If you just want to redirect the client to another URL, return an ILink from your form listener: public ILink formSubmitListener() { // Do work // ... return new StaticLink(http://www.example.com/;); } Martin On Wed, 03 Feb 2010 10:39:23 +0100, Ivano Luberti lube...@archicoop.it wrote: Hello, I'm trying to solve the following problem using T4.1.6. I want to have the user submit a form , perform some operation in the page class and then forward the user to an external web site. Of course I can return to the new user a new page with a form that has an action that points to the web site, but it would be far better to have my page class. I have tried using a service and HttpClient package but it return and HttpResponse and I'm not able to convert it to a WebResponse. Any suggestion? - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T4: forward browser to an external web site
I will try that: for whatever reason I was convinced that I had to submit a form and not simply a link. But checking twice the docs of the web site I have to forward to, I see I can use a link. Thanks for now Martin Strand ha scritto: If you just want to redirect the client to another URL, return an ILink from your form listener: public ILink formSubmitListener() { // Do work // ... return new StaticLink(http://www.example.com/;); } Martin On Wed, 03 Feb 2010 10:39:23 +0100, Ivano Luberti lube...@archicoop.it wrote: Hello, I'm trying to solve the following problem using T4.1.6. I want to have the user submit a form , perform some operation in the page class and then forward the user to an external web site. Of course I can return to the new user a new page with a form that has an action that points to the web site, but it would be far better to have my page class. I have tried using a service and HttpClient package but it return and HttpResponse and I'm not able to convert it to a WebResponse. Any suggestion? - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- == dott. Ivano Mario Luberti Archimede Informatica societa' cooperativa a r. l. Sede Operativa Via Gereschi 36 - 56126- Pisa tel.: +39-050- 580959 tel/fax: +39-050-9711344 web: www.archicoop.it == - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
[JOB] Looking for T5 software engineer in Boston
Hey all. I'm looking for a full-time, on-site hire for a T5 software engineer in boston immediately. Position will be posted in all the usual places but figured I'd give you guys a head start. Here's the job posting: Web Application / Software Engineer Interactive Factory is a client-oriented business creating custom design and software for over 15 years. As a leader in reference and academic publishing, we work on some of the most respected projects in the field and are building the next generation of online publishing applications. Our new platform, PubFactory, is proving to be a game changer for many publishers. We are looking for talented, passionate software engineers to join our team developing SQL and XML database-driven web applications from concept to release in small, collaborative teams. You will work with a talented group of experts in interface design, software engineering, graphic design, multimedia integration and project management. We are located in Boston's historic Fort Point Channel area, close to public transportation at South Station. Requirements: • 3+ years experience developing Java-based, database-driven web applications • Experience building software end-to-end; working with clients/stakeholders, writing specifications, designing building software, and maintenance • A passion for software and learning new technologies • SQL and relational databases (Hibernate or another ORM a plus) • XML technologies such as XML, XSLT, and XQuery (MarkLogic, eXist or other XML content repositories a plus) Nice-to-haves (for the ideal candidate): • Experience with Java 5+ and modern Java web frameworks and libraries (Tapestry 5 experience a plus) • Experience with (X)HTML, CSS, and JavaScript (jQuery, Prototype/Scriptaculous, etc) • Experience with Test-Driven Development and related technologies (JUnit, Selenium, etc) • Experience working within an agile process (Scrum, XP, etc) • Knowledge of TEI, DocBook, ePub, NLM and/or other XML schemas Interactive Factory has been building solutions to complex problems for over 15 years. We are a client-oriented business with a competitive and engaging work and culture. Please send resumes to engineeringj...@ifactory.com Dan Adams Principal Software Engineer Interactive Factory p: 617.235.5857