tree: 3f6acd9b69accc54110242a2aed3c87d52fcb8d2 [path history] [tgz]
  1. src/
  2. pom.xml
  3. README.md
examples/ejb-examples/README.md

index-group=Unrevised type=page status=published title=EJB Examples


*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* ## AnnotatedEJB package org.superbiz.servlet; import javax.annotation.Resource; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.sql.DataSource; @Stateless @LocalBean public class AnnotatedEJB implements AnnotatedEJBLocal, AnnotatedEJBRemote { @Resource private DataSource ds; private String name = "foo"; public String getName() { return name; } public void setName(String name) { this.name = name; } public DataSource getDs() { return ds; } public void setDs(DataSource ds) { this.ds = ds; } public String toString() { return "AnnotatedEJB[name=" + name + "]"; } } ## AnnotatedEJBLocal package org.superbiz.servlet; import javax.ejb.Local; import javax.sql.DataSource; @Local public interface AnnotatedEJBLocal { String getName(); void setName(String name); DataSource getDs(); void setDs(DataSource ds); } ## AnnotatedEJBRemote package org.superbiz.servlet; import javax.ejb.Remote; @Remote public interface AnnotatedEJBRemote { String getName(); void setName(String name); } ## AnnotatedServlet package org.superbiz.servlet; import javax.annotation.Resource; import javax.ejb.EJB; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; import java.io.IOException; public class AnnotatedServlet extends HttpServlet { @EJB private AnnotatedEJBLocal localEJB; @EJB private AnnotatedEJBRemote remoteEJB; @EJB private AnnotatedEJB localbeanEJB; @Resource private DataSource ds; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); ServletOutputStream out = response.getOutputStream(); out.println("LocalBean EJB"); out.println("@EJB=" + localbeanEJB); if (localbeanEJB != null) { out.println("@EJB.getName()=" + localbeanEJB.getName()); out.println("@EJB.getDs()=" + localbeanEJB.getDs()); } out.println("JNDI=" + lookupField("localbeanEJB")); out.println(); out.println("Local EJB"); out.println("@EJB=" + localEJB); if (localEJB != null) { out.println("@EJB.getName()=" + localEJB.getName()); out.println("@EJB.getDs()=" + localEJB.getDs()); } out.println("JNDI=" + lookupField("localEJB")); out.println(); out.println("Remote EJB"); out.println("@EJB=" + remoteEJB); if (localEJB != null) { out.println("@EJB.getName()=" + remoteEJB.getName()); } out.println("JNDI=" + lookupField("remoteEJB")); out.println(); out.println("DataSource"); out.println("@Resource=" + ds); out.println("JNDI=" + lookupField("ds")); } private Object lookupField(String name) { try { return new InitialContext().lookup("java:comp/env/" + getClass().getName() + "/" + name); } catch (NamingException e) { return null; } } } ## ClientHandler package org.superbiz.servlet; import javax.xml.ws.handler.Handler; import javax.xml.ws.handler.MessageContext; public class ClientHandler implements Handler { public boolean handleMessage(MessageContext messageContext) { WebserviceServlet.write(" ClientHandler handleMessage"); return true; } public void close(MessageContext messageContext) { WebserviceServlet.write(" ClientHandler close"); } public boolean handleFault(MessageContext messageContext) { WebserviceServlet.write(" ClientHandler handleFault"); return true; } } ## HelloEjb package org.superbiz.servlet; import javax.jws.WebService; @WebService(targetNamespace = "http://examples.org/wsdl") public interface HelloEjb { String hello(String name); } ## HelloEjbService package org.superbiz.servlet; import javax.ejb.Stateless; import javax.jws.HandlerChain; import javax.jws.WebService; @WebService( portName = "HelloEjbPort", serviceName = "HelloEjbService", targetNamespace = "http://examples.org/wsdl", endpointInterface = "org.superbiz.servlet.HelloEjb" ) @HandlerChain(file = "server-handlers.xml") @Stateless public class HelloEjbService implements HelloEjb { public String hello(String name) { WebserviceServlet.write(" HelloEjbService hello(" + name + ")"); if (name == null) name = "World"; return "Hello " + name + " from EJB Webservice!"; } } ## HelloPojo package org.superbiz.servlet; import javax.jws.WebService; @WebService(targetNamespace = "http://examples.org/wsdl") public interface HelloPojo { String hello(String name); } ## HelloPojoService package org.superbiz.servlet; import javax.jws.HandlerChain; import javax.jws.WebService; @WebService( portName = "HelloPojoPort", serviceName = "HelloPojoService", targetNamespace = "http://examples.org/wsdl", endpointInterface = "org.superbiz.servlet.HelloPojo" ) @HandlerChain(file = "server-handlers.xml") public class HelloPojoService implements HelloPojo { public String hello(String name) { WebserviceServlet.write(" HelloPojoService hello(" + name + ")"); if (name == null) name = "World"; return "Hello " + name + " from Pojo Webservice!"; } } ## JndiServlet package org.superbiz.servlet; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NameClassPair; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Collections; import java.util.Map; import java.util.TreeMap; public class JndiServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); ServletOutputStream out = response.getOutputStream(); Map<String, Object> bindings = new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER); try { Context context = (Context) new InitialContext().lookup("java:comp/"); addBindings("", bindings, context); } catch (NamingException e) { throw new ServletException(e); } out.println("JNDI Context:"); for (Map.Entry<String, Object> entry : bindings.entrySet()) { if (entry.getValue() != null) { out.println(" " + entry.getKey() + "=" + entry.getValue()); } else { out.println(" " + entry.getKey()); } } } private void addBindings(String path, Map<String, Object> bindings, Context context) { try { for (NameClassPair pair : Collections.list(context.list(""))) { String name = pair.getName(); String className = pair.getClassName(); if ("org.apache.naming.resources.FileDirContext$FileResource".equals(className)) { bindings.put(path + name, "<file>"); } else { try { Object value = context.lookup(name); if (value instanceof Context) { Context nextedContext = (Context) value; bindings.put(path + name, ""); addBindings(path + name + "/", bindings, nextedContext); } else { bindings.put(path + name, value); } } catch (NamingException e) { // lookup failed bindings.put(path + name, "ERROR: " + e.getMessage()); } } } } catch (NamingException e) { bindings.put(path, "ERROR: list bindings threw an exception: " + e.getMessage()); } } } ## JpaBean package org.superbiz.servlet; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class JpaBean { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private int id; @Column(name = "name") private String name; public int getId() { return id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return "[JpaBean id=" + id + ", name=" + name + "]"; } } ## JpaServlet package org.superbiz.servlet; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.PersistenceUnit; import javax.persistence.Query; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class JpaServlet extends HttpServlet { @PersistenceUnit(name = "jpa-example") private EntityManagerFactory emf; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); ServletOutputStream out = response.getOutputStream(); out.println("@PersistenceUnit=" + emf); EntityManager em = emf.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); JpaBean jpaBean = new JpaBean(); jpaBean.setName("JpaBean"); em.persist(jpaBean); transaction.commit(); transaction.begin(); Query query = em.createQuery("SELECT j FROM JpaBean j WHERE j.name='JpaBean'"); jpaBean = (JpaBean) query.getSingleResult(); out.println("Loaded " + jpaBean); em.remove(jpaBean); transaction.commit(); transaction.begin(); query = em.createQuery("SELECT count(j) FROM JpaBean j WHERE j.name='JpaBean'"); int count = ((Number) query.getSingleResult()).intValue(); if (count == 0) { out.println("Removed " + jpaBean); } else { out.println("ERROR: unable to remove" + jpaBean); } transaction.commit(); } } ## ResourceBean package org.superbiz.servlet; public class ResourceBean { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String toString() { return "[ResourceBean " + value + "]"; } } ## RunAsServlet package org.superbiz.servlet; import javax.ejb.EJB; import javax.ejb.EJBAccessException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.Principal; public class RunAsServlet extends HttpServlet { @EJB private SecureEJBLocal secureEJBLocal; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); ServletOutputStream out = response.getOutputStream(); out.println("Servlet"); Principal principal = request.getUserPrincipal(); if (principal != null) { out.println("Servlet.getUserPrincipal()=" + principal + " [" + principal.getName() + "]"); } else { out.println("Servlet.getUserPrincipal()=<null>"); } out.println("Servlet.isCallerInRole(\"user\")=" + request.isUserInRole("user")); out.println("Servlet.isCallerInRole(\"manager\")=" + request.isUserInRole("manager")); out.println("Servlet.isCallerInRole(\"fake\")=" + request.isUserInRole("fake")); out.println(); out.println("@EJB=" + secureEJBLocal); if (secureEJBLocal != null) { principal = secureEJBLocal.getCallerPrincipal(); if (principal != null) { out.println("@EJB.getCallerPrincipal()=" + principal + " [" + principal.getName() + "]"); } else { out.println("@EJB.getCallerPrincipal()=<null>"); } out.println("@EJB.isCallerInRole(\"user\")=" + secureEJBLocal.isCallerInRole("user")); out.println("@EJB.isCallerInRole(\"manager\")=" + secureEJBLocal.isCallerInRole("manager")); out.println("@EJB.isCallerInRole(\"fake\")=" + secureEJBLocal.isCallerInRole("fake")); try { secureEJBLocal.allowUserMethod(); out.println("@EJB.allowUserMethod() ALLOWED"); } catch (EJBAccessException e) { out.println("@EJB.allowUserMethod() DENIED"); } try { secureEJBLocal.allowManagerMethod(); out.println("@EJB.allowManagerMethod() ALLOWED"); } catch (EJBAccessException e) { out.println("@EJB.allowManagerMethod() DENIED"); } try { secureEJBLocal.allowFakeMethod(); out.println("@EJB.allowFakeMethod() ALLOWED"); } catch (EJBAccessException e) { out.println("@EJB.allowFakeMethod() DENIED"); } try { secureEJBLocal.denyAllMethod(); out.println("@EJB.denyAllMethod() ALLOWED"); } catch (EJBAccessException e) { out.println("@EJB.denyAllMethod() DENIED"); } } out.println(); } } ## SecureEJB package org.superbiz.servlet; import javax.annotation.Resource; import javax.annotation.security.DeclareRoles; import javax.annotation.security.DenyAll; import javax.annotation.security.RolesAllowed; import javax.ejb.SessionContext; import javax.ejb.Stateless; import java.security.Principal; @Stateless @DeclareRoles({"user", "manager", "fake"}) public class SecureEJB implements SecureEJBLocal { @Resource private SessionContext context; public Principal getCallerPrincipal() { return context.getCallerPrincipal(); } public boolean isCallerInRole(String role) { return context.isCallerInRole(role); } @RolesAllowed("user") public void allowUserMethod() { } @RolesAllowed("manager") public void allowManagerMethod() { } @RolesAllowed("fake") public void allowFakeMethod() { } @DenyAll public void denyAllMethod() { } public String toString() { return "SecureEJB[userName=" + getCallerPrincipal() + "]"; } } ## SecureEJBLocal package org.superbiz.servlet; import javax.ejb.Local; import java.security.Principal; @Local public interface SecureEJBLocal { Principal getCallerPrincipal(); boolean isCallerInRole(String role); void allowUserMethod(); void allowManagerMethod(); void allowFakeMethod(); void denyAllMethod(); } ## SecureServlet package org.superbiz.servlet; import javax.ejb.EJB; import javax.ejb.EJBAccessException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.Principal; public class SecureServlet extends HttpServlet { @EJB private SecureEJBLocal secureEJBLocal; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); ServletOutputStream out = response.getOutputStream(); out.println("Servlet"); Principal principal = request.getUserPrincipal(); if (principal != null) { out.println("Servlet.getUserPrincipal()=" + principal + " [" + principal.getName() + "]"); } else { out.println("Servlet.getUserPrincipal()=<null>"); } out.println("Servlet.isCallerInRole(\"user\")=" + request.isUserInRole("user")); out.println("Servlet.isCallerInRole(\"manager\")=" + request.isUserInRole("manager")); out.println("Servlet.isCallerInRole(\"fake\")=" + request.isUserInRole("fake")); out.println(); out.println("@EJB=" + secureEJBLocal); if (secureEJBLocal != null) { principal = secureEJBLocal.getCallerPrincipal(); if (principal != null) { out.println("@EJB.getCallerPrincipal()=" + principal + " [" + principal.getName() + "]"); } else { out.println("@EJB.getCallerPrincipal()=<null>"); } out.println("@EJB.isCallerInRole(\"user\")=" + secureEJBLocal.isCallerInRole("user")); out.println("@EJB.isCallerInRole(\"manager\")=" + secureEJBLocal.isCallerInRole("manager")); out.println("@EJB.isCallerInRole(\"fake\")=" + secureEJBLocal.isCallerInRole("fake")); try { secureEJBLocal.allowUserMethod(); out.println("@EJB.allowUserMethod() ALLOWED"); } catch (EJBAccessException e) { out.println("@EJB.allowUserMethod() DENIED"); } try { secureEJBLocal.allowManagerMethod(); out.println("@EJB.allowManagerMethod() ALLOWED"); } catch (EJBAccessException e) { out.println("@EJB.allowManagerMethod() DENIED"); } try { secureEJBLocal.allowFakeMethod(); out.println("@EJB.allowFakeMethod() ALLOWED"); } catch (EJBAccessException e) { out.println("@EJB.allowFakeMethod() DENIED"); } try { secureEJBLocal.denyAllMethod(); out.println("@EJB.denyAllMethod() ALLOWED"); } catch (EJBAccessException e) { out.println("@EJB.denyAllMethod() DENIED"); } } out.println(); } } ## ServerHandler package org.superbiz.servlet; import javax.xml.ws.handler.Handler; import javax.xml.ws.handler.MessageContext; public class ServerHandler implements Handler { public boolean handleMessage(MessageContext messageContext) { WebserviceServlet.write(" ServerHandler handleMessage"); return true; } public void close(MessageContext messageContext) { WebserviceServlet.write(" ServerHandler close"); } public boolean handleFault(MessageContext messageContext) { WebserviceServlet.write(" ServerHandler handleFault"); return true; } } ## WebserviceClient package org.superbiz.servlet; import javax.xml.ws.Service; import java.io.PrintStream; import java.net.URL; public class WebserviceClient { /** * Unfortunately, to run this example with CXF you need to have a HUGE class path. This * is just what is required to run CXF: * <p/> * jaxb-api-2.0.jar * jaxb-impl-2.0.3.jar * <p/> * saaj-api-1.3.jar * saaj-impl-1.3.jar * <p/> * <p/> * cxf-api-2.0.2-incubator.jar * cxf-common-utilities-2.0.2-incubator.jar * cxf-rt-bindings-soap-2.0.2-incubator.jar * cxf-rt-core-2.0.2-incubator.jar * cxf-rt-databinding-jaxb-2.0.2-incubator.jar * cxf-rt-frontend-jaxws-2.0.2-incubator.jar * cxf-rt-frontend-simple-2.0.2-incubator.jar * cxf-rt-transports-http-jetty-2.0.2-incubator.jar * cxf-rt-transports-http-2.0.2-incubator.jar * cxf-tools-common-2.0.2-incubator.jar * <p/> * geronimo-activation_1.1_spec-1.0.jar * geronimo-annotation_1.0_spec-1.1.jar * geronimo-ejb_3.0_spec-1.0.jar * geronimo-jpa_3.0_spec-1.1.jar * geronimo-servlet_2.5_spec-1.1.jar * geronimo-stax-api_1.0_spec-1.0.jar * jaxws-api-2.0.jar * axis2-jws-api-1.3.jar * <p/> * wsdl4j-1.6.1.jar * xml-resolver-1.2.jar * XmlSchema-1.3.1.jar */ public static void main(String[] args) throws Exception { PrintStream out = System.out; Service helloPojoService = Service.create(new URL("http://localhost:8080/ejb-examples/hello?wsdl"), null); HelloPojo helloPojo = helloPojoService.getPort(HelloPojo.class); out.println(); out.println("Pojo Webservice"); out.println(" helloPojo.hello(\"Bob\")=" + helloPojo.hello("Bob")); out.println(" helloPojo.hello(null)=" + helloPojo.hello(null)); out.println(); Service helloEjbService = Service.create(new URL("http://localhost:8080/HelloEjbService?wsdl"), null); HelloEjb helloEjb = helloEjbService.getPort(HelloEjb.class); out.println(); out.println("EJB Webservice"); out.println(" helloEjb.hello(\"Bob\")=" + helloEjb.hello("Bob")); out.println(" helloEjb.hello(null)=" + helloEjb.hello(null)); out.println(); } } ## WebserviceServlet package org.superbiz.servlet; import javax.jws.HandlerChain; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.ws.WebServiceRef; import java.io.IOException; public class WebserviceServlet extends HttpServlet { @WebServiceRef @HandlerChain(file = "client-handlers.xml") private HelloPojo helloPojo; @WebServiceRef @HandlerChain(file = "client-handlers.xml") private HelloEjb helloEjb; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); ServletOutputStream out = response.getOutputStream(); OUT = out; try { out.println("Pojo Webservice"); out.println(" helloPojo.hello(\"Bob\")=" + helloPojo.hello("Bob")); out.println(); out.println(" helloPojo.hello(null)=" + helloPojo.hello(null)); out.println(); out.println("EJB Webservice"); out.println(" helloEjb.hello(\"Bob\")=" + helloEjb.hello("Bob")); out.println(); out.println(" helloEjb.hello(null)=" + helloEjb.hello(null)); out.println(); } finally { OUT = out; } } private static ServletOutputStream OUT; public static void write(String message) { try { ServletOutputStream out = OUT; out.println(message); } catch (Exception e) { e.printStackTrace(); } } } ## persistence.xml <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit transaction-type="RESOURCE_LOCAL" name="jpa-example"> <jta-data-source>java:openejb/Connector/Default JDBC Database</jta-data-source> <non-jta-data-source>java:openejb/Connector/Default Unmanaged JDBC Database</non-jta-data-source> <class>org.superbiz.servlet.JpaBean</class> <properties> <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/> </properties> </persistence-unit> </persistence> ## client-handlers.xml <jws:handler-chains xmlns:jws="http://java.sun.com/xml/ns/javaee"> <jws:handler-chain> <jws:handler> <jws:handler-name>ClientHandler</jws:handler-name> <jws:handler-class>org.superbiz.servlet.ClientHandler</jws:handler-class> </jws:handler> </jws:handler-chain> </jws:handler-chains> ## server-handlers.xml <jws:handler-chains xmlns:jws="http://java.sun.com/xml/ns/javaee"> <jws:handler-chain> <jws:handler> <jws:handler-name>ServerHandler</jws:handler-name> <jws:handler-class>org.superbiz.servlet.ServerHandler</jws:handler-class> </jws:handler> </jws:handler-chain> </jws:handler-chains> ## context.xml <Context> <!-- This only works if the context is installed under the correct name --> <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="webapps/ejb-examples-1.0-SNAPSHOT/WEB-INF/tomcat-users.xml"/> <Environment name="context.xml/environment" value="ContextString" type="java.lang.String"/> <Resource name="context.xml/resource" auth="Container" type="org.superbiz.servlet.ResourceBean" factory="org.apache.naming.factory.BeanFactory" value="ContextResource"/> <ResourceLink name="context.xml/resource-link" global="server.xml/environment" type="java.lang.String"/> <!-- web.xml resources --> <Resource name="web.xml/resource-env-ref" auth="Container" type="org.superbiz.servlet.ResourceBean" factory="org.apache.naming.factory.BeanFactory" value="ContextResourceEnvRef"/> <Resource name="web.xml/resource-ref" auth="Container" type="org.superbiz.servlet.ResourceBean" factory="org.apache.naming.factory.BeanFactory" value="ContextResourceRef"/> <ResourceLink name="web.xml/resource-link" global="server.xml/environment" type="java.lang.String"/> </Context> ## jetty-web.xml <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Get name="securityHandler"> <Set name="loginService"> <New class="org.eclipse.jetty.security.HashLoginService"> <Set name="name">Test Realm</Set> <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties </Set> </New> </Set> </Get> </Configure> ## tomcat-users.xml <tomcat-users> <user name="manager" password="manager" roles="manager,user"/> <user name="user" password="user" roles="user"/> </tomcat-users> ## web.xml <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" metadata-complete="false" version="2.5"> <display-name>OpenEJB Servlet Examples</display-name> <servlet> <servlet-name>AnnotatedServlet</servlet-name> <servlet-class>org.superbiz.servlet.AnnotatedServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AnnotatedServlet</servlet-name> <url-pattern>/annotated/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>JpaServlet</servlet-name> <servlet-class>org.superbiz.servlet.JpaServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JpaServlet</servlet-name> <url-pattern>/jpa/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>JndiServlet</servlet-name> <servlet-class>org.superbiz.servlet.JndiServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JndiServlet</servlet-name> <url-pattern>/jndi/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>RunAsServlet</servlet-name> <servlet-class>org.superbiz.servlet.RunAsServlet</servlet-class> <run-as> <role-name>fake</role-name> </run-as> </servlet> <servlet-mapping> <servlet-name>RunAsServlet</servlet-name> <url-pattern>/runas/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>SecureServlet</servlet-name> <servlet-class>org.superbiz.servlet.SecureServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SecureServlet</servlet-name> <url-pattern>/secure/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Secure Area</web-resource-name> <url-pattern>/secure/*</url-pattern> <url-pattern>/runas/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>user</role-name> </auth-constraint> </security-constraint> <servlet> <servlet-name>WebserviceServlet</servlet-name> <servlet-class>org.superbiz.servlet.WebserviceServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>WebserviceServlet</servlet-name> <url-pattern>/webservice/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>HelloPojoService</servlet-name> <servlet-class>org.superbiz.servlet.HelloPojoService</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloPojoService</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <login-config> <auth-method>BASIC</auth-method> </login-config> <security-role> <role-name>manager</role-name> </security-role> <security-role> <role-name>user</role-name> </security-role> <env-entry> <env-entry-name>web.xml/env-entry</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>WebValue</env-entry-value> </env-entry> <resource-ref> <res-ref-name>web.xml/Data Source</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> <resource-env-ref> <resource-env-ref-name>web.xml/Queue</resource-env-ref-name> <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type> </resource-env-ref> <ejb-ref> <ejb-ref-name>web.xml/EjbRemote</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <remote>org.superbiz.servlet.AnnotatedEJBRemote</remote> </ejb-ref> <ejb-local-ref> <ejb-ref-name>web.xml/EjLocal</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <local>org.superbiz.servlet.AnnotatedEJBLocal</local> </ejb-local-ref> <persistence-unit-ref> <persistence-unit-ref-name>web.xml/PersistenceUnit</persistence-unit-ref-name> <persistence-unit-name>jpa-example</persistence-unit-name> </persistence-unit-ref> <persistence-context-ref> <persistence-context-ref-name>web.xml/PersistenceContext</persistence-context-ref-name> <persistence-unit-name>jpa-example</persistence-unit-name> <persistence-context-type>Transactional</persistence-context-type> </persistence-context-ref> </web-app>