Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-security.adoc
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-security.adoc?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-security.adoc
 (added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-security.adoc
 Sun Dec  4 11:01:40 2016
@@ -0,0 +1,766 @@
+= Webservice Ws Security
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-ws-security can be browsed at 
https://github.com/apache/tomee/tree/master/examples/webservice-ws-security
+
+
+*Help us document this example! Click the blue pencil icon in the upper right 
to edit this page.*
+
+==  CalculatorImpl
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.annotation.security.DeclareRoles;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+
+/**
+ * This is an EJB 3 style pojo stateless session bean
+ * Every stateless session bean implementation must be annotated
+ * using the annotation @Stateless
+ * This EJB has a single interface: CalculatorWs a webservice interface.
+ */
+//START SNIPPET: code
+@DeclareRoles(value = {"Administrator"})
+@Stateless
+@WebService(
+        portName = "CalculatorPort",
+        serviceName = "CalculatorWsService",
+        targetNamespace = "http://superbiz.org/wsdl";,
+        endpointInterface = "org.superbiz.calculator.CalculatorWs")
+public class CalculatorImpl implements CalculatorWs, CalculatorRemote {
+
+    @RolesAllowed(value = {"Administrator"})
+    public int sum(int add1, int add2) {
+        return add1 + add2;
+    }
+
+    public int multiply(int mul1, int mul2) {
+        return mul1 * mul2;
+    }
+}
+----
+
+
+==  CalculatorRemote
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface CalculatorRemote {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  CalculatorWs
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import javax.jws.WebService;
+
+//END SNIPPET: code
+
+/**
+ * This is an EJB 3 webservice interface
+ * A webservice interface must be annotated with the @Local
+ * annotation.
+ */
+//START SNIPPET: code
+@WebService(targetNamespace = "http://superbiz.org/wsdl";)
+public interface CalculatorWs {
+
+    public int sum(int add1, int add2);
+
+    public int multiply(int mul1, int mul2);
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar 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/ejb-jar_3_0.xsd";
+         version="3.0" id="simple" metadata-complete="false">
+
+  <enterprise-beans>
+
+    <session>
+      <ejb-name>CalculatorImplTimestamp1way</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplTimestamp2ways</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplUsernameTokenPlainPassword</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplUsernameTokenHashedPassword</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplSign</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplEncrypt2ways</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplSign2ways</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+    <session>
+      <ejb-name>CalculatorImplEncryptAndSign2ways</ejb-name>
+      <service-endpoint>org.superbiz.calculator.CalculatorWs</service-endpoint>
+      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
+      <session-type>Stateless</session-type>
+      <transaction-type>Container</transaction-type>
+    </session>
+
+  </enterprise-beans>
+
+</ejb-jar>
+----
+
+    
+
+==  openejb-jar.xml
+
+
+[source,xml]
+----
+<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1";>
+
+  <ejb-deployment ejb-name="CalculatorImpl">
+    <properties>
+      # webservice.security.realm
+      # webservice.security.securityRealm
+      # webservice.security.transportGarantee = NONE
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = UsernameToken
+      wss4j.in.passwordType = PasswordText
+      wss4j.in.passwordCallbackClass = 
org.superbiz.calculator.CustomPasswordHandler
+
+      # automatically added
+      
wss4j.in.validator.{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken
 = org.apache.openejb.server.cxf.OpenEJBLoginValidator
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplTimestamp1way">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = Timestamp
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplTimestamp2ways">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = Timestamp
+      wss4j.out.action = Timestamp
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplUsernameTokenPlainPassword">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = UsernameToken
+      wss4j.in.passwordType = PasswordText
+      
wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplUsernameTokenHashedPassword">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = UsernameToken
+      wss4j.in.passwordType = PasswordDigest
+      
wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplUsernameTokenPlainPasswordEncrypt">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = UsernameToken Encrypt
+      wss4j.in.passwordType = PasswordText
+      
wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+      wss4j.in.decryptionPropFile = 
META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-server.properties
+    </properties>
+  </ejb-deployment>
+  <ejb-deployment ejb-name="CalculatorImplSign">
+    <properties>
+      webservice.security.authMethod = WS-SECURITY
+      wss4j.in.action = Signature
+      
wss4j.in.passwordCallbackClass=org.superbiz.calculator.CustomPasswordHandler
+      wss4j.in.signaturePropFile = 
META-INF/CalculatorImplSign-server.properties
+    </properties>
+  </ejb-deployment>
+
+</openejb-jar>
+----
+
+    
+
+==  webservices.xml
+
+
+[source,xml]
+----
+<webservices xmlns="http://java.sun.com/xml/ns/j2ee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+             xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd";
+             xmlns:ger="http://ciaows.org/wsdl"; version="1.1">
+
+  <webservice-description>
+    
<webservice-description-name>CalculatorWsService</webservice-description-name>
+    <port-component>
+      <port-component-name>CalculatorImplTimestamp1way</port-component-name>
+      <wsdl-port>CalculatorImplTimestamp1way</wsdl-port>
+      
<service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplTimestamp1way</ejb-link>
+      </service-impl-bean>
+    </port-component>
+    <port-component>
+      <port-component-name>CalculatorImplTimestamp2ways</port-component-name>
+      <wsdl-port>CalculatorImplTimestamp2ways</wsdl-port>
+      
<service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplTimestamp2ways</ejb-link>
+      </service-impl-bean>
+    </port-component>
+    <port-component>
+      
<port-component-name>CalculatorImplUsernameTokenPlainPassword</port-component-name>
+      <wsdl-port>CalculatorImplUsernameTokenPlainPassword</wsdl-port>
+      
<service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplUsernameTokenPlainPassword</ejb-link>
+      </service-impl-bean>
+    </port-component>
+    <port-component>
+      
<port-component-name>CalculatorImplUsernameTokenHashedPassword</port-component-name>
+      <wsdl-port>CalculatorImplUsernameTokenHashedPassword</wsdl-port>
+      
<service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplUsernameTokenHashedPassword</ejb-link>
+      </service-impl-bean>
+    </port-component>
+    <port-component>
+      
<port-component-name>CalculatorImplUsernameTokenPlainPasswordEncrypt</port-component-name>
+      <wsdl-port>CalculatorImplUsernameTokenPlainPasswordEncrypt</wsdl-port>
+      
<service-endpoint-interface>org.superbiz.calculator.CalculatorWs</service-endpoint-interface>
+      <service-impl-bean>
+        <ejb-link>CalculatorImplUsernameTokenPlainPasswordEncrypt</ejb-link>
+      </service-impl-bean>
+    </port-component>
+  </webservice-description>
+
+</webservices>
+----
+
+    
+
+==  CalculatorTest
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import junit.framework.TestCase;
+import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;
+import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
+import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSPasswordCallback;
+import org.apache.ws.security.handler.WSHandlerConstants;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.soap.SOAPBinding;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+public class CalculatorTest extends TestCase {
+
+    //START SNIPPET: setup
+    protected void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.embedded.remotable", "true");
+
+        new InitialContext(properties);
+    }
+    //END SNIPPET: setup
+
+    //START SNIPPET: webservice
+    public void testCalculatorViaWsInterface() throws Exception {
+        Service calcService = Service.create(new 
URL("http://127.0.0.1:4204/CalculatorImpl?wsdl";),
+                new QName("http://superbiz.org/wsdl";, "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, 
WSHandlerConstants.USERNAME_TOKEN);
+        outProps.put(WSHandlerConstants.USER, "jane");
+        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() 
{
+
+            public void handle(Callback[] callbacks) throws IOException, 
UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("waterfall");
+            }
+        });
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(10, calc.sum(4, 6));
+    }
+
+    public void testCalculatorViaWsInterfaceWithTimestamp1way() throws 
Exception {
+        Service calcService = Service.create(new 
URL("http://127.0.0.1:4204/CalculatorImplTimestamp1way?wsdl";),
+                new QName("http://superbiz.org/wsdl";, "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl";,
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplTimestamp1way";);
+
+//        CalculatorWs calc = calcService.getPort(
+//             new QName("http://superbiz.org/wsdl";, "CalculatorWsService2"),
+//             CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(12, calc.multiply(3, 4));
+    }
+
+    public void testCalculatorViaWsInterfaceWithTimestamp2ways() throws 
Exception {
+        Service calcService = Service.create(new 
URL("http://127.0.0.1:4204/CalculatorImplTimestamp2ways?wsdl";),
+                new QName("http://superbiz.org/wsdl";, "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl";,
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplTimestamp2ways";);
+
+//        CalculatorWs calc = calcService.getPort(
+//             new QName("http://superbiz.org/wsdl";, "CalculatorWsService2"),
+//             CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+        endpoint.getInInterceptors().add(new SAAJInInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        Map<String, Object> inProps = new HashMap<String, Object>();
+        inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP);
+        WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);
+        endpoint.getInInterceptors().add(wssIn);
+
+        assertEquals(12, calc.multiply(3, 4));
+    }
+
+    public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPassword() 
throws Exception {
+        Service calcService = Service.create(new 
URL("http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPassword?wsdl";),
+                new QName("http://superbiz.org/wsdl";, "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl";,
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                
"http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPassword";);
+
+//        CalculatorWs calc = calcService.getPort(
+//             new QName("http://superbiz.org/wsdl";, "CalculatorWsService2"),
+//             CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, 
WSHandlerConstants.USERNAME_TOKEN);
+        outProps.put(WSHandlerConstants.USER, "jane");
+        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() 
{
+
+            @Override
+            public void handle(Callback[] callbacks) throws IOException, 
UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("waterfall");
+            }
+        });
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(10, calc.sum(4, 6));
+    }
+
+    public void testCalculatorViaWsInterfaceWithUsernameTokenHashedPassword() 
throws Exception {
+        Service calcService = Service.create(new 
URL("http://127.0.0.1:4204/CalculatorImplUsernameTokenHashedPassword?wsdl";),
+                new QName("http://superbiz.org/wsdl";, "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl";,
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                
"http://127.0.0.1:8204/CalculatorImplUsernameTokenHashedPassword";);
+
+//        CalculatorWs calc = calcService.getPort(
+//             new QName("http://superbiz.org/wsdl";, "CalculatorWsService2"),
+//             CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, 
WSHandlerConstants.USERNAME_TOKEN);
+        outProps.put(WSHandlerConstants.USER, "jane");
+        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() 
{
+
+            @Override
+            public void handle(Callback[] callbacks) throws IOException, 
UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("waterfall");
+            }
+        });
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(10, calc.sum(4, 6));
+    }
+
+    public void 
testCalculatorViaWsInterfaceWithUsernameTokenPlainPasswordEncrypt() throws 
Exception {
+        Service calcService = Service.create(new 
URL("http://127.0.0.1:4204/CalculatorImplUsernameTokenPlainPasswordEncrypt?wsdl";),
+                new QName("http://superbiz.org/wsdl";, "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl";,
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                
"http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPasswordEncrypt";);
+
+//        CalculatorWs calc = calcService.getPort(
+//             new QName("http://superbiz.org/wsdl";, "CalculatorWsService2"),
+//             CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, 
WSHandlerConstants.USERNAME_TOKEN
+                + " " + WSHandlerConstants.ENCRYPT);
+        outProps.put(WSHandlerConstants.USER, "jane");
+        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() 
{
+
+            @Override
+            public void handle(Callback[] callbacks) throws IOException, 
UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("waterfall");
+            }
+        });
+        outProps.put(WSHandlerConstants.ENC_PROP_FILE, 
"META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-client.properties");
+        outProps.put(WSHandlerConstants.ENCRYPTION_USER, "serveralias");
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(10, calc.sum(4, 6));
+    }
+
+    public void testCalculatorViaWsInterfaceWithSign() throws Exception {
+        Service calcService = Service.create(new 
URL("http://127.0.0.1:4204/CalculatorImplSign?wsdl";),
+                new QName("http://superbiz.org/wsdl";, "CalculatorWsService"));
+        assertNotNull(calcService);
+
+        // for debugging (ie. TCPMon)
+        calcService.addPort(new QName("http://superbiz.org/wsdl";,
+                "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING,
+                "http://127.0.0.1:8204/CalculatorImplSign";);
+
+//      CalculatorWs calc = calcService.getPort(
+//     new QName("http://superbiz.org/wsdl";, "CalculatorWsService2"),
+//     CalculatorWs.class);
+
+        CalculatorWs calc = calcService.getPort(CalculatorWs.class);
+
+        Client client = ClientProxy.getClient(calc);
+        Endpoint endpoint = client.getEndpoint();
+        endpoint.getOutInterceptors().add(new SAAJOutInterceptor());
+
+        Map<String, Object> outProps = new HashMap<String, Object>();
+        outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE);
+        outProps.put(WSHandlerConstants.USER, "clientalias");
+        outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() 
{
+
+            @Override
+            public void handle(Callback[] callbacks) throws IOException, 
UnsupportedCallbackException {
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+                pc.setPassword("clientPassword");
+            }
+        });
+        outProps.put(WSHandlerConstants.SIG_PROP_FILE, 
"META-INF/CalculatorImplSign-client.properties");
+        outProps.put(WSHandlerConstants.SIG_KEY_ID, "IssuerSerial");
+
+        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
+        endpoint.getOutInterceptors().add(wssOut);
+
+        assertEquals(24, calc.multiply(4, 6));
+    }
+    //END SNIPPET: webservice
+}
+----
+
+
+==  CustomPasswordHandler
+
+
+[source,java]
+----
+package org.superbiz.calculator;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import java.io.IOException;
+
+public class CustomPasswordHandler implements CallbackHandler {
+    @Override
+    public void handle(Callback[] callbacks) throws IOException, 
UnsupportedCallbackException {
+        WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
+
+        if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN) {
+            // TODO get the password from the users.properties if possible
+            pc.setPassword("waterfall");
+        } else if (pc.getUsage() == WSPasswordCallback.DECRYPT) {
+            pc.setPassword("serverPassword");
+        } else if (pc.getUsage() == WSPasswordCallback.SIGNATURE) {
+            pc.setPassword("serverPassword");
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+    generate keys:
+    
+    do.sun.jdk:
+         [echo] *** Running on a Sun JDK ***
+         [echo] generate server keys
+         [java] Certificate stored in file 
</Users/dblevins/examples/webservice-ws-security/target/classes/META-INF/serverKey.rsa>
+         [echo] generate client keys
+         [java] Certificate stored in file 
</Users/dblevins/examples/webservice-ws-security/target/test-classes/META-INF/clientKey.rsa>
+         [echo] import client/server public keys in client/server keystores
+         [java] Certificate was added to keystore
+         [java] Certificate was added to keystore
+    
+    do.ibm.jdk:
+    
+    run:
+         [echo] Running JDK specific keystore creation target
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.calculator.CalculatorTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/webservice-ws-security
+INFO - openejb.base = /Users/dblevins/examples/webservice-ws-security
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/webservice-ws-security/target/classes
+INFO - Beginning load: 
/Users/dblevins/examples/webservice-ws-security/target/classes
+INFO - Configuring enterprise application: 
/Users/dblevins/examples/webservice-ws-security/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, 
provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean CalculatorImplTimestamp1way: 
Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application 
"/Users/dblevins/examples/webservice-ws-security/classpath.ear" loaded.
+INFO - Assembling app: 
/Users/dblevins/examples/webservice-ws-security/classpath.ear
+INFO - Jndi(name=CalculatorImplTimestamp1wayRemote) --> 
Ejb(deployment-id=CalculatorImplTimestamp1way)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplTimestamp1way)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp1way) --> 
Ejb(deployment-id=CalculatorImplTimestamp1way)
+INFO - Jndi(name=CalculatorImplTimestamp2waysRemote) --> 
Ejb(deployment-id=CalculatorImplTimestamp2ways)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplTimestamp2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplTimestamp2ways) --> 
Ejb(deployment-id=CalculatorImplTimestamp2ways)
+INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordRemote) --> 
Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPassword) 
--> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword)
+INFO - Jndi(name=CalculatorImplUsernameTokenHashedPasswordRemote) --> 
Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenHashedPassword)
 --> Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword)
+INFO - Jndi(name=CalculatorImplUsernameTokenPlainPasswordEncryptRemote) --> 
Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplUsernameTokenPlainPasswordEncrypt)
 --> Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt)
+INFO - Jndi(name=CalculatorImplSignRemote) --> 
Ejb(deployment-id=CalculatorImplSign)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplSign!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplSign)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign) --> 
Ejb(deployment-id=CalculatorImplSign)
+INFO - Jndi(name=CalculatorImplEncrypt2waysRemote) --> 
Ejb(deployment-id=CalculatorImplEncrypt2ways)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplEncrypt2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplEncrypt2ways) --> 
Ejb(deployment-id=CalculatorImplEncrypt2ways)
+INFO - Jndi(name=CalculatorImplSign2waysRemote) --> 
Ejb(deployment-id=CalculatorImplSign2ways)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplSign2ways)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImplSign2ways) --> 
Ejb(deployment-id=CalculatorImplSign2ways)
+INFO - Jndi(name=CalculatorImplEncryptAndSign2waysRemote) --> 
Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImplEncryptAndSign2ways) --> 
Ejb(deployment-id=CalculatorImplEncryptAndSign2ways)
+INFO - Jndi(name=CalculatorImplRemote) --> Ejb(deployment-id=CalculatorImpl)
+INFO - 
Jndi(name=global/classpath.ear/simple/CalculatorImpl!org.superbiz.calculator.CalculatorRemote)
 --> Ejb(deployment-id=CalculatorImpl)
+INFO - Jndi(name=global/classpath.ear/simple/CalculatorImpl) --> 
Ejb(deployment-id=CalculatorImpl)
+INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, 
ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless 
Container)
+INFO - Created Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, 
container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplSign, 
ejb-name=CalculatorImplSign, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, 
ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless 
Container)
+INFO - Created Ejb(deployment-id=CalculatorImplTimestamp1way, 
ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplSign2ways, 
ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplEncrypt2ways, 
ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, 
ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless 
Container)
+INFO - Created Ejb(deployment-id=CalculatorImplTimestamp2ways, 
ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)
+INFO - Created 
Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, 
ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default 
Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenHashedPassword, 
ejb-name=CalculatorImplUsernameTokenHashedPassword, container=Default Stateless 
Container)
+INFO - Started Ejb(deployment-id=CalculatorImpl, ejb-name=CalculatorImpl, 
container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplSign, 
ejb-name=CalculatorImplSign, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplEncryptAndSign2ways, 
ejb-name=CalculatorImplEncryptAndSign2ways, container=Default Stateless 
Container)
+INFO - Started Ejb(deployment-id=CalculatorImplTimestamp1way, 
ejb-name=CalculatorImplTimestamp1way, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplSign2ways, 
ejb-name=CalculatorImplSign2ways, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplEncrypt2ways, 
ejb-name=CalculatorImplEncrypt2ways, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=CalculatorImplUsernameTokenPlainPassword, 
ejb-name=CalculatorImplUsernameTokenPlainPassword, container=Default Stateless 
Container)
+INFO - Started Ejb(deployment-id=CalculatorImplTimestamp2ways, 
ejb-name=CalculatorImplTimestamp2ways, container=Default Stateless Container)
+INFO - Started 
Ejb(deployment-id=CalculatorImplUsernameTokenPlainPasswordEncrypt, 
ejb-name=CalculatorImplUsernameTokenPlainPasswordEncrypt, container=Default 
Stateless Container)
+INFO - Deployed 
Application(path=/Users/dblevins/examples/webservice-ws-security/classpath.ear)
+INFO - Initializing network services
+INFO - Creating ServerService(id=httpejbd)
+INFO - Creating ServerService(id=cxf)
+INFO - Creating ServerService(id=admin)
+INFO - Creating ServerService(id=ejbd)
+INFO - Creating ServerService(id=ejbds)
+INFO - Initializing network services
+  ** Starting Services **
+  NAME                 IP              PORT  
+  httpejbd             127.0.0.1       4204  
+  admin thread         127.0.0.1       4200  
+  ejbd                 127.0.0.1       4201  
+  ejbd                 127.0.0.1       4203  
+-------
+Ready!
+Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.582 sec
+
+Results :
+
+Tests run: 7, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-security.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-with-resources-config.adoc
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-with-resources-config.adoc?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-with-resources-config.adoc
 (added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-with-resources-config.adoc
 Sun Dec  4 11:01:40 2016
@@ -0,0 +1,9 @@
+= webservice-ws-with-resources-config
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example webservice-ws-with-resources-config can be browsed at 
https://github.com/apache/tomee/tree/master/examples/webservice-ws-with-resources-config
+
+No README.md yet, be the first to contribute one!

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/webservice-ws-with-resources-config.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/index.adoc
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/index.adoc?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/index.adoc
 (added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/index.adoc
 Sun Dec  4 11:01:40 2016
@@ -0,0 +1,72 @@
+= Security
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+=== Security updates
+
+Please note that, except in rare circumstances, binary patches are not 
produced for individual vulnerabilities. To obtain the binary fix for a 
particular vulnerability you should upgrade to an Apache TomEE version where 
that vulnerability has been fixed.
+
+Source patches, usually in the form of references to SVN commits, may be 
provided in either in a vulnerability announcement and/or the vulnerability 
details listed on these pages. These source patches may be used by users 
wishing to build their own local version of TomEE with just that security patch 
rather than upgrade.
+
+The Apache Software Foundation takes a very active stance in eliminating 
security problems and denial of service attacks against Apache projects.
+
+We strongly encourage folks to report such problems to the private security 
mailing list first, before disclosing them in a public forum.
+
+Please note that the security mailing list should only be used for reporting 
undisclosed security vulnerabilities in Apache projects and managing the 
process of fixing such vulnerabilities. We cannot accept regular bug reports or 
other queries at this address. All mail sent to this address that does not 
relate to an undisclosed security problem will be ignored.
+
+If you need to report a bug that isn't an undisclosed security vulnerability, 
please use the bug reporting system.
+
+Questions about:
+
+- how to configure TomEE securely
+- if a vulnerability applies to your particular application
+- obtaining further information on a published vulnerability
+- availability of patches and/or new releases
+
+should be addressed to the link:support.html[users mailing list].
+
+The private security mailing address is: security (at) apache (dot) org
+
+Note that all networked servers are subject to denial of service attacks, and 
we cannot promise magic workarounds to generic problems (such as a client 
streaming lots of data to your server, or re-requesting the same URL 
repeatedly). In general our philosophy is to avoid any attacks which can cause 
the server to consume resources in a non-linear relationship to the size of 
inputs.
+
+=== Third-party projects
+
+Apache is built with the following components. Please see the security 
advisories information for each component for more information on the security 
vulnerabilities and issues that may affect that component.
+
+- Apache Tomcat 7.x: Tomcat 7 security advisories
+- Apache OpenJPA
+- Apache CXF: CXF Security Advisories
+- Apache OpenWebBeans
+- Apache MyFaces
+- Apache Bean Validation
+
+By default any regular TomEE releases uses latest sub project releases, so 
that we can follow all security fixes as much as possible.
+
+=== Apache TomEE versioning details
+
+As security is a key concern in many companies, TomEE team also considers to 
deliver specific security fixes for those external projects being fixed. For 
instance, if Tomcat fixes a security issue in Tomcat x.y.z, used in TomEE 
a.b.c, we will consider packaging a new security update release using the new 
Tomcat release.
+
+In order to achieve a smoothly migration patch between a TomEE version and a 
security update, the TomEE team has decided to adopt the following versioning 
major.minor.patch[.security update]
+
+- major ([0-9]+): it refers mainly to the Java EE version we implement. 1.x 
for Java EE 6 for example.
+- minor ([0-9]+): contains features, bugfixes and security fixes (internal or 
third-party)
+- patch ([0-9]+): only bugfixes applied
+
+Optionally we can concatenate a security update to the version if TomEE source 
base if not impacted but only a dependency. Note this didn't happen yet.
+
+=== Additional information
+
+==== Secunia
+
+Secunia is an international IT security company specialising in vulnerability 
management based in Copenhagen, Denmark.
+
+There is an Apache Software Foundation vendor declared so you can follow all 
vulnerabilities related to Apache products. Of course, a Apache TomEE product 
is also available so you can search for know advisories.
+
+=== Links
+
+- http://apache.org/security/
+- http://apache.org/security/projects.html
+- http://apache.org/security/committers.html
+- http://cve.mitre.org/[Common Vulnerabilities and Exposures database]

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/index.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/support.adoc
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/support.adoc?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/support.adoc
 (added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/support.adoc
 Sun Dec  4 11:01:40 2016
@@ -0,0 +1,34 @@
+= Support
+:jbake-date: 2016-03-16
+:jbake-type: page
+:jbake-status: published
+:jbake-tomeepdf:
+
+
+Support for Apache TomEE is given freely by the community.
+Please be aware when asking questions that the Apache Software Foundation does 
not have paid developers or dedicated support staff.
+All community support comes from volunteers on a volunteer basis.
+Joining the link:../community/index.html[Community] as a volunteer and helping 
your fellow users is highly encouraged!
+
+=== Mailing Lists
+
+- mailto:[email protected][User Mailing List] 
(mailto:[email protected][Subscribe now] | 
mailto:[email protected][Unsubscribe]): for all your questions 
or to share the issues you can meet
+- mailto:[email protected][Dev Mailing List] 
(mailto:[email protected][Subscribe now] | 
mailto:[email protected][Unsubscribe]): to speak about the 
project and developments
+- mailto:[email protected][Commits Mailing List] 
(mailto:[email protected][Subscribe now] | 
mailto:[email protected][Unsubscribe]): receive commits by 
mail
+
+
+=== IRC
+
+http://webchat.freenode.net/?channels=openejb[openejb @ freenode] is the 
channel most of us use.
+
+=== Forums
+
+Our forum (mailing lists archives) can be accessed through 
http://tomee-openejb.979440.n4.nabble.com/[Nabble].
+
+=== Bugtracker/JIRA
+
+If you encounter a bug or want to submit a patch just go on our 
https://issues.apache.org/jira/browse/TOMEE[JIRA].
+
+=== Commercial Support
+
+If you need advanced support with SLA please have a look to our 
link:../community/commercial.html[Commercial] page.

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/security/support.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/jbake.properties
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/jbake.properties?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/jbake.properties 
(added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/jbake.properties 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,19 @@
+default.status=published
+render.encoding=UTF-8
+render.tags = true
+render.archive = false
+render.feed = false
+render.sitemap = true
+template.folder = templates
+template.index.file = index.gsp
+template.sitemap.file = sitemap.gsp
+template.page.file = page.gsp
+template.post.file = post.gsp
+template.contributors.file = contributors.gsp
+template.examples.file = examples.gsp
+template.blog.file = blog.gsp
+# template.archive.file = archive.gsp
+# template.tag.file = tags.gsp
+# template.feed.file = feed.gsp
+
+

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/jbake.properties
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/archive.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/archive.gsp?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/archive.gsp 
(added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/archive.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,33 @@
+<%include 'header.gsp'%>
+
+       <%include 'menu.gsp'%>
+
+<div id="main-block">
+       <div class="page-header">
+               <div class="container">
+                       <h1>Blog Archive</h1>
+               </div>
+       </div>
+       <div class="container">
+               <!--<ul>-->
+                       <%def last_month=null;%>
+                       <%published_posts.each {post ->%>
+                               <%if (last_month) {%>
+                                       <%if (post.date.format("MMMM yyyy") != 
last_month) {%>
+                                               </ul>
+                                               <h4>${post.date.format("MMMM 
yyyy")}</h4>
+                                               <ul>
+                                       <%}%>
+                               <% } else { %>
+                                       <h4>${post.date.format("MMMM 
yyyy")}</h4>
+                                       <ul>
+                               <% }%>
+
+                               <li>${post.date.format("dd")} - <a 
href="${post.uri}">${post.title}</a></li>
+                               <%last_month = post.date.format("MMMM yyyy")%>
+                       <%}%>
+               </ul>
+       </div>
+</div>
+       
+<%include "footer.gsp"%>
\ No newline at end of file

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/archive.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/blog.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/blog.gsp?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/blog.gsp 
(added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/blog.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,28 @@
+<%include "header.gsp"%>
+
+       <%include "menu.gsp"%>
+
+    <div id="main-block" class="container section-padded">
+        <div class="row title">
+            <div class='page-header'>
+              <h2>Last posts</h2>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-12">
+                <%
+                last = published_posts.size() - 1
+                published_posts.eachWithIndex {post, idx ->
+                %>
+                    <a href="<%if (content.rootpath) {%>${content.rootpath}<% 
} else { %><% }%>${post.uri}"><h1>${post.title}</h1></a>
+                    <%if (post.date) {%><p><small>${post.date}</small></p><% } 
%>
+                    <p>${post.body}</p>
+                    <% if (idx != last) { %><hr /><% } %>
+                <%}%>
+
+                <!--p>Older posts are available in the <a 
href="/${config.archive_file}">archive</a>.</p>-->
+            </div>
+        </div>
+    </div>
+
+<%include "footer.gsp"%>
\ No newline at end of file

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/blog.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/contributors.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/contributors.gsp?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/contributors.gsp
 (added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/contributors.gsp
 Sun Dec  4 11:01:40 2016
@@ -0,0 +1,43 @@
+<%include "header.gsp"%>
+       <%include "menu.gsp"%>
+
+    <div id="main-block" class="container section-padded">
+        <div class="row title">
+            <div class='page-header'>
+              <%if (content.containsKey('tomeepdf')) {%>
+              <div class='btn-toolbar pull-right'>
+                <div class='btn-group'>
+                    <a class="btn" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>${content.uri.replace('html', 
'pdf')}"><i class="fa fa-file-pdf-o"></i> Download as PDF</a>
+                </div>
+              </div>
+              <% } %>
+              <h2>${content.title}</h2>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-12 contributors">
+              <div class="text-center" style="padding-bottom: 2em;">A <i 
class="fa fa-star-o" style="color:#F38F24;"></i> means the contributor is also 
a committer.</div>
+              <ul>
+                <%
+                    
org.apache.tomee.website.Contributors.load(content.body).each {contributor ->
+                %>
+                  <div class="col-sm-4">
+                    <div class="photo col-sm-5">
+                      <img alt="${contributor.name}" 
src="${contributor.gravatar}?s=140">
+                      <% if (contributor.committer){ %><i class="pull-right fa 
fa-star-o" style="color:#F38F24;"></i><% } %>
+                    </div>
+                    <div class="col-sm-7">
+                      <h3 class="contributor-name" 
style="font-size:1.4em;">${contributor.name}</h3>
+                      <p>${contributor.description ? contributor.description : 
''}</p>
+                      <ul class="list-inline">
+                      <%contributor.link.each {l ->%>
+                      <li><a href="${l.url}">${l.name}</a></li>
+                      <%}%>
+                    </div>
+                  </div>
+              <% } %>
+              </ul>
+            </div>
+        </div>
+    </div>
+<%include "footer.gsp"%>

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/contributors.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/examples.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/examples.gsp?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/examples.gsp 
(added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/examples.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,202 @@
+<%include "header.gsp"%>
+<%include "menu.gsp"%>
+
+<div id="main-block" class="container section-padded">
+<div class="row title">
+  <div class='page-header'>
+    <% if (content.containsKey('tomeepdf')) { %>
+    <div class='btn-toolbar pull-right'>
+      <div class='btn-group'>
+        <a class="btn" href="<%if (content.rootpath) {%>${content.rootpath}<% 
} else { %><% }%>${content.uri.replace('html', 'pdf')}">
+          <i class="fa fa-file-pdf-o"></i> Download as PDF
+        </a>
+      </div>
+    </div>
+    <% } %>
+    <h2>${content.title}</h2>
+  </div>
+</div>
+<div class="row">
+  <div class="col-md-12">
+    <input id="example-search" placeholder="Search an example and click on it 
to browse it..." class="typeahead"/>
+  </div>
+  <div class="vspace">&nbsp;</div>
+  <div class="col-md-12 examples text-center">
+    <%
+    def all = org.apache.tomee.website.Examples.loadAll()
+    def keys = []
+    keys.addAll(all.all.keySet())
+
+    [keys.subList(0, (int) keys.size() / 2), keys.subList((int) keys.size() / 
2, keys.size())].each { list ->
+      keys.subList(0, (int) keys.size() / 2).each { tag ->
+      examples = all.all[tag]
+    %>
+    <div class="col-sm-6">
+      <h3>${tag}</h3>
+      <ul class="list-unstyled">
+        <% examples.each {example -> %>
+        <li><a href="${example.name}.html">${example.name}</a></li>
+        <% } %>
+      </ul>
+    </div>
+    <% }} %>
+  </div>
+</div>
+</div>
+
+<style>
+.typeahead {
+    padding-left: 43px;
+    padding-right: 43px;
+    border-radius: 23px;
+    border:1px #ccc solid;
+    height: 46px;
+    width: 100%;
+    outline: none;
+}
+.typeahead:focus {
+    border-color: #66afe9;
+    outline: 0;
+    box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 
0.6);
+}
+
+
+/* typeahead styling*/
+.tt-menu hr {
+    margin-bottom: 5px;
+    margin-top: 5px;
+}
+.tt-menu h3 {
+    margin-bottom: 2px;
+    margin-top: 2px;
+    padding-bottom: 2px;
+    padding-top: 2px;
+    font-size: 18px;
+    font-weight: bolder;
+}
+.tt-menu h2 {
+    font-weight: bold;
+}
+span.twitter-typeahead .tt-menu,
+span.twitter-typeahead .tt-dropdown-menu {
+  z-index: 1000;
+  display: none;
+  width: 100%;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  list-style: none;
+  text-align: left;
+  background-color: #ffffff;
+  border: 1px solid #cccccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  background-clip: padding-box;
+}
+span.twitter-typeahead h3 {
+  padding-left: 15px;
+  clear: both;
+}
+span.twitter-typeahead .tt-suggestion {
+  display: block;
+  padding: 3px 15px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333333;
+}
+span.twitter-typeahead .tt-suggestion.tt-cursor,
+span.twitter-typeahead .tt-suggestion:hover,
+span.twitter-typeahead .tt-suggestion:focus {
+  color: #ffffff;
+  text-decoration: none;
+  outline: 0;
+  background-color: #337ab7;
+}
+.input-group.input-group-lg span.twitter-typeahead .form-control {
+  height: 46px;
+  padding: 10px 16px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.input-group.input-group-sm span.twitter-typeahead .form-control {
+  height: 30px;
+  padding: 5px 10px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+span.twitter-typeahead {
+  width: 100%;
+}
+.input-group span.twitter-typeahead {
+  display: block !important;
+  height: 34px;
+}
+.input-group span.twitter-typeahead .tt-menu,
+.input-group span.twitter-typeahead .tt-dropdown-menu {
+  top: 32px !important;
+}
+.input-group span.twitter-typeahead:not(:first-child):not(:last-child) 
.form-control {
+  border-radius: 0;
+}
+.input-group span.twitter-typeahead:first-child .form-control {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group span.twitter-typeahead:last-child .form-control {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.input-group.input-group-sm span.twitter-typeahead {
+  height: 30px;
+}
+.input-group.input-group-sm span.twitter-typeahead .tt-menu,
+.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu {
+  top: 30px !important;
+}
+.input-group.input-group-lg span.twitter-typeahead {
+  height: 46px;
+}
+.input-group.input-group-lg span.twitter-typeahead .tt-menu,
+.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu {
+  top: 46px !important;
+}
+</style>
+<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>js/jquery-1.11.1.min.js"></script>
+<script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>js/typeahead.bundle.min.js"></script>
+<script>
+(function () {
+  var names = [];
+  document.querySelectorAll('.examples li > a').forEach(function (s) {
+    names.push(s.innerHTML);
+  });
+  var engine = new Bloodhound({
+    datumTokenizer: Bloodhound.tokenizers.nonword,
+    queryTokenizer: Bloodhound.tokenizers.nonword,
+    local: names
+  });
+  var input = jQuery('#example-search');
+  input.typeahead({ minLength: 1, highlight: true }, {
+    name: 'Examples',
+    source: engine,
+    templates: {
+      suggestion: function (item) {
+        return '<a href="' + item + '.html">' + item + '</a>';
+      }
+    }
+  });
+  input.bind('typeahead:select', function (evt, item) {
+    jQuery('li > a[href="' + item + '.html"]').click();
+  });
+})();
+
+</script>
+
+<%include "footer.gsp"%>
+

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/examples.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/feed.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/feed.gsp?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/feed.gsp 
(added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/feed.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,25 @@
+<% import static groovy.xml.XmlUtil.escapeXml %><?xml version="1.0"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom";>
+  <channel>
+    <title>JBake</title>
+    <link>${config.site_host}</link>
+    <atom:link href="${config.site_host}/${config.feed_file}" rel="self" 
type="application/rss+xml" />
+    <description>JBake Bootstrap Template</description>
+    <language>en-gb</language>
+    <pubDate>${published_date.format("EEE, d MMM yyyy HH:mm:ss Z")}</pubDate>
+    <lastBuildDate>${published_date.format("EEE, d MMM yyyy HH:mm:ss 
Z")}</lastBuildDate>
+
+    <%published_posts.each {post -> %>
+    <item>
+      <title>${post.title}</title>
+      <link>${config.site_host}/${post.uri}</link>
+      <pubDate>${post.date.format("EEE, d MMM yyyy HH:mm:ss Z")}</pubDate>
+      <guid isPermaLink="false">${post.uri}</guid>
+      <description>
+      ${escapeXml(post.body)}
+         </description>
+    </item>
+    <%}%>
+
+  </channel> 
+</rss>

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/feed.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/footer.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/footer.gsp?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/footer.gsp 
(added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/footer.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,80 @@
+<footer>
+               <div class="container">
+                       <div class="row">
+                               <div class="col-sm-6 text-center-mobile">
+                                       <h3 class="white">Apache TomEE the 
little great server.</h3>
+                                       <h5 class="light regular 
light-white">"A good application in a good server"</h5>
+                                       <ul class="social-footer">
+                                               <li><a 
href="https://fr-fr.facebook.com/ApacheTomEE/";><i class="fa 
fa-facebook"></i></a></li>
+                                               <li><a 
href="https://twitter.com/apachetomee";><i class="fa fa-twitter"></i></a></li>
+                                               <li><a 
href="https://plus.google.com/communities/105208241852045684449";><i class="fa 
fa-google-plus"></i></a></li>
+                                       </ul>
+                               </div>
+                               <div class="col-sm-6 text-center-mobile">
+                                       <div class="row opening-hours">
+                                               <div class="col-sm-3 
text-center-mobile">
+                                                       <h5><a href="<%if 
(content.rootpath) {%>${content.rootpath}<% } else { %><% }%>admin/index.html" 
class="white">Administration</a></h5>
+                                                       <ul 
class="list-unstyled">
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>admin/cluster/index.html" class="regular light-white">Cluster</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>admin/configuration/index.html" class="regular 
light-white">Configuration</a></li>
+                                                       </ul>
+                                               </div>
+                                               <div class="col-sm-3 
text-center-mobile">
+                                                       <h5><a href="<%if 
(content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>developer/index.html" class="white">Developer</a></h5>
+                                                       <ul 
class="list-unstyled">
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>developer/classloading/index.html" class="regular 
light-white">Classloading</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>developer/ide/index.html" class="regular light-white">IDE</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>developer/testing/index.html" class="regular light-white">Testing</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>developer/tools/index.html" class="regular light-white">Tools</a></li>
+                                                       </ul>
+                                               </div>
+                                               <div class="col-sm-3 
text-center-mobile">
+                                                       <h5><a href="<%if 
(content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>advanced/index.html" class="white">Advanced</a></h5>
+                                                       <ul 
class="list-unstyled">
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>advanced/applicationcomposer/index.html" class="regular 
light-white">Application Composer</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>advanced/setup/index.html" class="regular light-white">Setup</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>advanced/shading/index.html" class="regular light-white">Shading</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>advanced/tomee-embedded/index.html" class="regular light-white">TomEE 
Embedded</a></li>
+                                                       </ul>
+                                               </div>
+                                               <div class="col-sm-3 
text-center-mobile">
+                                                       <h5><a href="<%if 
(content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>community/index.html" class="white">Community</a></h5>
+                                                       <ul 
class="list-unstyled">
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>community/contributors.html" class="regular 
light-white">Contributors</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>community/social.html" class="regular light-white">Social</a></li>
+                                                               <li><a 
href="<%if (content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>community/sources.html" class="regular light-white">Sources</a></li>
+                                                       </ul>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+                       <div class="row bottom-footer text-center-mobile">
+                               <div class="col-sm-12 light-white">
+                                       <p>Copyright &copy; 1999-2016 The 
Apache Software Foundation, Licensed under the Apache License, Version 2.0. 
Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE 
project logo are trademarks of The Apache Software Foundation. All other marks 
mentioned may be trademarks or registered trademarks of their respective 
owners.</p>
+                               </div>
+                       </div>
+               </div>
+       </footer>
+       <!-- Holder for mobile navigation -->
+       <div class="mobile-nav">
+        <ul>
+          <li><a hef="<%if (content.rootpath) {%>${content.rootpath}<% } else 
{ %><% }%>admin/index.html">Administrators</a>
+          <li><a hef="<%if (content.rootpath) {%>${content.rootpath}<% } else 
{ %><% }%>developer/index.html">Developers</a>
+          <li><a hef="<%if (content.rootpath) {%>${content.rootpath}<% } else 
{ %><% }%>advanced/index.html">Advanced</a>
+          <li><a hef="<%if (content.rootpath) {%>${content.rootpath}<% } else 
{ %><% }%>community/index.html">Community</a>
+        </ul>
+               <a href="#" class="close-link"><i class="arrow_up"></i></a>
+       </div>
+       <!-- Scripts -->
+       <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/jquery-1.11.1.min.js"></script>
+       <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/owl.carousel.min.js"></script>
+       <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/bootstrap.min.js"></script>
+       <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/wow.min.js"></script>
+       <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/typewriter.js"></script>
+       <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/jquery.onepagenav.js"></script>
+       <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/tree.jquery.js"></script>
+       <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/highlight.pack.js"></script>
+    <script src="<%if (content.rootpath) {%>${content.rootpath}<% } else { 
%><% }%>js/main.js"></script>
+               </body>
+
+</html>

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/footer.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/header.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/header.gsp?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/header.gsp 
(added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/header.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+       <meta charset="UTF-8">
+       <meta http-equiv="X-UA-Compatible" content="IE=edge">
+       <meta name="viewport" content="width=device-width, initial-scale=1">
+       <title>Apache TomEE</title>
+       <meta name="description" content="Apache TomEE is a light JavaEE server 
with a lot tooling" />
+       <meta name="keywords" 
content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian"
 />
+       <meta name="author" content="Luka Cvetinovic for Codrops" />
+       <link rel="icon" href="<%if (content.rootpath) {%>${content.rootpath}<% 
} else { %><% }%>favicon.ico">
+       <link rel="icon"  type="image/png" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>favicon.png">
+       <meta name="msapplication-TileColor" content="#80287a">
+       <meta name="theme-color" content="#80287a">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>css/normalize.css">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>css/bootstrap.css">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>css/owl.css">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>css/animate.css">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% 
}%>fonts/font-awesome-4.1.0/css/font-awesome.min.css">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>fonts/eleganticons/et-icons.css">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>css/jqtree.css">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>css/idea.css">
+       <link rel="stylesheet" type="text/css" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>css/cardio.css">
+
+       <script type="text/javascript">
+
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-2717626-1']);
+      _gaq.push(['_setDomainName', 'apache.org']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+      })();
+
+    </script>
+</head>
+
+<body>
+    <div class="preloader">
+               <img src="<%if (content.rootpath) {%>${content.rootpath}<% } 
else { %><% }%>img/loader.gif" alt="Preloader image">
+       </div>
\ No newline at end of file

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/header.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/index.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/index.gsp?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/index.gsp 
(added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/index.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,57 @@
+<%include "header.gsp"%>
+       <%include "menu.gsp"%>
+  <div id="main-block">
+    <header id="intro">
+        <div class="container">
+            <div class="table">
+                <div class="header-text">
+                    <div class="row">
+                        <div class="col-md-12 text-center index-title">
+                            Apache TomEE
+                        </div>
+                        <div class="col-md-12 text-center">
+                            <h1 class="white typed">Embedded or distributed as 
you prefer.</h1>
+                            <span class="typed-cursor">|</span>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </header>
+
+    <section>
+               <div class="cut cut-top" style="border-right-width: 
1899px;"></div>
+               <div class="container">
+                       <div class="row intro-tables animated fadeInUp" 
style="opacity: 0;">
+                               <div class="col-md-4">
+                                   <div class="intro-table intro-table1 
intro-table-hover1 intro-table-hover">
+                        <h5 class="white heading hide-hover">TomEE for 
administrators</h5>
+                        <div class="bottom">
+                            <h4 class="white heading small-heading no-margin 
regular">I'm an admin</h4>
+                            <a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>admin/index.html" class="btn 
btn-white-fill expand">Learn more...</a>
+                        </div>
+                    </div>
+                               </div>
+                               <div class="col-md-4">
+                                       <div class="intro-table intro-table2 
intro-table-hover2 intro-table-hover">
+                                               <h5 class="white heading 
hide-hover">TomEE for developers</h5>
+                                               <div class="bottom">
+                                                       <h4 class="white 
heading small-heading no-margin regular">I'm a developer</h4>
+                                                       <a href="<%if 
(content.rootpath) {%>${content.rootpath}<% } else { %><% 
}%>developer/index.html" class="btn btn-white-fill expand">Learn more...</a>
+                                               </div>
+                                       </div>
+                               </div>
+                               <div class="col-md-4">
+                    <div class="intro-table intro-table3 intro-table-hover3 
intro-table-hover">
+                        <h5 class="white heading hide-hover">Advanced 
usages</h5>
+                        <div class="bottom">
+                            <h4 class="white heading small-heading no-margin 
regular">Too easy, let's go further</h4>
+                            <a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>advanced/index.html" class="btn 
btn-white-fill expand">Learn more...</a>
+                        </div>
+                    </div>
+                               </div>
+                       </div>
+               </div>
+       </section>
+  </div>
+<%include "footer.gsp"%>

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/index.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/menu.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/menu.gsp?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/menu.gsp 
(added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/menu.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,42 @@
+    <nav class="navbar">
+               <div class="container">
+                       <!-- Brand and toggle get grouped for better mobile 
display -->
+                       <div class="navbar-header">
+                               <button type="button" class="navbar-toggle 
collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+                                       <span class="sr-only">Toggle 
navigation</span>
+                                       <span class="icon-bar"></span>
+                                       <span class="icon-bar"></span>
+                                       <span class="icon-bar"></span>
+                               </button>
+                               <a class="navbar-brand" href="<%if 
(content.rootpath) {%>${content.rootpath}<% } else { %><% }%>/#">
+                                   <span>
+
+                                   <% if (content.uri && content.uri == 
'/index.html') { %>
+                                       <img
+                            src="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>img/logo.png"
+                            data-active-url="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>img/logo-active.png">
+                    <% } else { %>
+                        <img src="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>img/logo-active.png">
+                    <% } %>
+
+                    </span>
+                                   Apache TomEE
+                </a>
+                       </div>
+                       <!-- Collect the nav links, forms, and other content 
for toggling -->
+                       <div class="collapse navbar-collapse" 
id="bs-example-navbar-collapse-1">
+                               <ul class="nav navbar-nav navbar-right 
main-nav">
+                                       <li><a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% 
}%>developer/index.html">Developer</a></li>
+                                       <li><a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>admin/index.html">Admin</a></li>
+                                       <li><a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>advanced/index.html">Advanced</a></li>
+                                       <li><a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>security/index.html">Security</a></li>
+                                       <li><a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>examples/index.html">Examples</a></li>
+                                       <li><a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>blog/index.html">Blog</a></li>
+                                       <li><a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% 
}%>community/index.html">Community</a></li>
+                    <li><a href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>download.html">Downloads</a></li>
+                               </ul>
+                       </div>
+                       <!-- /.navbar-collapse -->
+               </div>
+               <!-- /.container-fluid -->
+       </nav>

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/menu.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/page.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/page.gsp?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/page.gsp 
(added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/page.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,25 @@
+<%include "header.gsp"%>
+       <%include "menu.gsp"%>
+
+    <div id="main-block" class="container section-padded">
+        <div class="row title">
+            <div class='page-header'>
+              <%if (content.containsKey('tomeepdf')) {%>
+              <div class='btn-toolbar pull-right' style="z-index: 2000;">
+                <div class='btn-group'>
+                    <a class="btn" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>${content.uri.replace('html', 
'pdf')}"><i class="fa fa-file-pdf-o"></i> Download as PDF</a>
+                </div>
+              </div>
+              <% } %>
+              <h2>${content.title}</h2>
+            </div>
+        </div>
+        <div class="row">
+            <%if (content.body) {%>
+            <div class="col-md-12">
+                ${content.body}
+            </div>
+            <% } %>
+        </div>
+    </div>
+<%include "footer.gsp"%>

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/page.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/post.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/post.gsp?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/post.gsp 
(added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/post.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,25 @@
+<%include "header.gsp"%>
+       
+       <%include "menu.gsp"%>
+       <div id="main-block" class="container section-padded">
+        <div class="row title">
+            <div class='page-header'>
+              <%if (content.containsKey('tomeepdf')) {%>
+              <div class='btn-toolbar pull-right'>
+                <div class='btn-group'>
+                    <a class="btn" href="<%if (content.rootpath) 
{%>${content.rootpath}<% } else { %><% }%>${content.uri.replace('html', 
'pdf')}"><i class="fa fa-file-pdf-o"></i> Download as PDF</a>
+                </div>
+              </div>
+              <% } %>
+              <h2>${content.title}</h2>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-12">
+                <%if (content.date) {%><p><em>${content.date}</em></p><% } %>
+
+                ${content.body}
+            </div>
+        </div>
+    </div>
+<%include "footer.gsp"%>

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/post.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/sitemap.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/sitemap.gsp?rev=1772522&view=auto
==============================================================================
--- 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/sitemap.gsp 
(added)
+++ 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/sitemap.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd";>
+<%published_content.each {content -> %>
+    <url>
+       <loc>http://tomee.apache.org/${content.uri}</loc>
+       <% if (content.date) {%><lastmod>${content.date}</lastmod><% }%>
+    </url>
+<%}%>
+</urlset>

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/sitemap.gsp
------------------------------------------------------------------------------
    svn:executable = *

Added: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/tags.gsp
URL: 
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/tags.gsp?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/tags.gsp 
(added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/tags.gsp 
Sun Dec  4 11:01:40 2016
@@ -0,0 +1,38 @@
+<%include "header.gsp"%>
+
+       <%include "menu.gsp"%>
+
+       <div id="main-block">
+       <div class="page-header">
+               <div class="container">
+                       <div class="row">
+                               <div class="col-sm-12">
+                                       <h1>Tag: ${tag}</h1>
+                               </div>
+                       </div>
+               </div>
+       </div>
+
+       <div class="container">
+       <!--<ul>-->
+               <%def last_month=null;%>
+               <%tag_posts.each {post ->%>
+               <%if (last_month) {%>
+                       <%if (post.date.format("MMMM yyyy") != last_month) {%>
+                               </ul>
+                               <h4>${post.date.format("MMMM yyyy")}</h4>
+                               <ul>
+                       <%}%>
+               <%} else {%>
+                       <h4>${post.date.format("MMMM yyyy")}</h4>
+                       <ul>
+               <%}%>
+               
+               <li>${post.date.format("dd")} - <a 
href="${post.uri}">${post.title}</a></li>
+               <% last_month = post.date.format("MMMM yyyy")%>
+               <%}%>
+       </ul>
+       </div>
+       </div>
+       
+<%include "footer.gsp"%>
\ No newline at end of file

Propchange: 
tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/templates/tags.gsp
------------------------------------------------------------------------------
    svn:executable = *


Reply via email to