How to include CSS files in JSF
<h:outputStylesheet library="css" name="style.css" />
References
http://www.mkyong.com/jsf2/how-to-include-cascading-style-sheets-css-in-jsf/
<h:outputStylesheet library="css" name="style.css" />
References
http://www.mkyong.com/jsf2/how-to-include-cascading-style-sheets-css-in-jsf/
build.gradle
group 'ir.iterator' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'war' sourceCompatibility = 1.8 repositories { mavenCentral() maven{ url "http://repository.primefaces.org" } } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' // https://mvnrepository.com/artifact/com.sun.faces/jsf-api compile group: 'com.sun.faces', name: 'jsf-api', version: '2.2.14' // https://mvnrepository.com/artifact/com.sun.faces/jsf-impl compile group: 'com.sun.faces', name: 'jsf-impl', version: '2.2.14' // https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/javax.servlet.jsp.jstl-api compile group: 'javax.servlet.jsp.jstl', name: 'javax.servlet.jsp.jstl-api', version: '1.2.1' // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0' // https://mvnrepository.com/artifact/org.primefaces/primefaces compile group: 'org.primefaces', name: 'primefaces', version: '6.0' // https://mvnrepository.com/artifact/org.primefaces.themes/all-themes compile group: 'org.primefaces.themes', name: 'all-themes', version: '1.0.10' }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <!-- Change to "Production" when you are ready to deploy --> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <context-param> <param-name>primefaces.THEME</param-name> <param-value>bootstrap</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Map these files with JSF --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> <!-- Welcome page --> <welcome-file-list> <welcome-file>index.xhtml</welcome-file> </welcome-file-list> </web-app>
build.gradle
group 'ir.iterator' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'war' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' // https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-server compile group: 'org.glassfish.jersey.core', name: 'jersey-server', version: '2.25.1' // https://mvnrepository.com/artifact/org.glassfish.jersey.containers/jersey-container-servlet compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: '2.25' }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <servlet> <servlet-name>javax.ws.rs.core.Application</servlet-name> </servlet> <servlet-mapping> <servlet-name>javax.ws.rs.core.Application</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
HelloWorldResource.java
@Path("hello") public class HelloWorldResource { @GET @Produces(MediaType.TEXT_PLAIN) @Path("get") public String sayhello() { return "hello"; } }
References
http://stackoverflow.com/questions/22994690/which-init-param-to-use-jersey-config-server-provider-packages-or-javax-ws-rs-a
https://jersey.java.net/documentation/latest/deployment.html#deployment.servlet.3.pluggability.noapp
build.gradle
// https://mvnrepository.com/artifact/org.ocpsoft.rewrite/rewrite-servlet compile group: 'org.ocpsoft.rewrite', name: 'rewrite-servlet', version: '3.4.1.Final' // https://mvnrepository.com/artifact/org.ocpsoft.rewrite/rewrite-config-prettyfaces compile group: 'org.ocpsoft.rewrite', name: 'rewrite-config-prettyfaces', version: '3.4.1.Final'
/WEB-INF/pretty-config.xml
<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd"> <url-mapping id="login"> <pattern value="/login" /> <view-id value="/legacy/user/login.jsp" /> </url-mapping> </pretty-config>
References
http://www.ocpsoft.org/prettyfaces/
build.gradle
group 'ir.iterator' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'war' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' // https://mvnrepository.com/artifact/com.sun.faces/jsf-api compile group: 'com.sun.faces', name: 'jsf-api', version: '2.2.14' // https://mvnrepository.com/artifact/com.sun.faces/jsf-impl compile group: 'com.sun.faces', name: 'jsf-impl', version: '2.2.14' // https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/javax.servlet.jsp.jstl-api compile group: 'javax.servlet.jsp.jstl', name: 'javax.servlet.jsp.jstl-api', version: '1.2.1' // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0' }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <!-- Change to "Production" when you are ready to deploy --> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Map these files with JSF --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> <!-- Welcome page --> <welcome-file-list> <welcome-file>welcome.xhtml</welcome-file> </welcome-file-list> </web-app>
References
http://b1102.blogspot.ru/2014/09/jsf-21-gralde-tomcat-hello-world.html
curl -s get.sdkman.io | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install groovy
References
http://www.groovy-lang.org/install.html
xwalkView.load("javascript:" + jsCode, null)
References
http://stackoverflow.com/questions/24601087/crosswalk-call-js-function-from-java-on-android
String fileName="build.txt"; ClassLoader classLoader = getClass().getClassLoader(); InputStream in = classLoader.getResourceAsStream(fileName); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(in)); String buildNumberStr= bufferedReader.readLine(); bufferedReader.close(); result=buildNumberStr;
References
https://www.mkyong.com/java/java-read-a-file-from-resources-folder/
Apache
a2enmod proxy a2enmod ssl a2enmod proxy_http a2enmod proxy_ajp a2enmod rewrite a2enmod deflate a2enmod headers a2enmod proxy_balancer a2enmod proxy_connect a2enmod proxy_html sudo a2enmod remoteip sudo service apache2 restart
<VirtualHost *:80> ServerName iterator.ir ProxyRequests Off ProxyPreserveHost On RemoteIPHeader X-Forwarded-For <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:13602/ ProxyPassReverse / http://localhost:13602/ </VirtualHost>
<VirtualHost *:443> SSLEngine on RewriteEngine on SSLCertificateKeyFile /etc/letsencrypt/live/lastlab.pupli.net/privkey.pem SSLCertificateFile /etc/letsencrypt/live/lastlab.pupli.net/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/lastlab.pupli.net/chain.pem ServerName lastlab.pupli.net ProxyRequests Off ProxyPreserveHost On RemoteIPHeader X-Forwarded-For <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:14001/ ProxyPassReverse / http://localhost:14001/ </VirtualHost>
Spring Boot
set server.use-forward-headers to server.use-forward-headers in Spring Boot application.properties
Java
String ipAddress = request.getHeader("X-FORWARDED-FOR"); if (ipAddress == null) { ipAddress = request.getRemoteAddr(); }
References
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html#howto-use-tomcat-behind-a-proxy-server
https://www.mkyong.com/java/how-to-get-client-ip-address-in-java/
http://serverfault.com/questions/130925/passing-ip-address-with-mod-proxy
https://www.leaseweb.com/labs/2014/12/tutorial-apache-2-4-transparent-reverse-proxy/
http://www.thegeekstuff.com/2011/07/Apache-Virtual-Host/
https://devops.profitbricks.com/tutorials/configure-apache-as-a-reverse-proxy-using-mod_proxy-on-ubuntu/
https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension
Enum Example
public enum Level { HIGH, MEDIUM, LOW }
Enums in if Statements
Level level = ... //assign some Level constant to it if( level == Level.HIGH) { } else if( level == Level.MEDIUM) { } else if( level == Level.LOW) { }
Enum Iteration
for (Level level : Level.values()) { System.out.println(level); }
Enum Fields
public enum Level { HIGH (3), //calls constructor with value 3 MEDIUM(2), //calls constructor with value 2 LOW (1) //calls constructor with value 1 ; // semicolon needed when fields / methods follow private final int levelCode; private Level(int levelCode) { this.levelCode = levelCode; } }
Enum Methods
public enum Level { HIGH (3), //calls constructor with value 3 MEDIUM(2), //calls constructor with value 2 LOW (1) //calls constructor with value 1 ; // semicolon needed when fields / methods follow private final int levelCode; Level(int levelCode) { this.levelCode = levelCode; } public int getLevelCode() { return this.levelCode; } }
References
http://tutorials.jenkov.com/java/enums.html
https://www.mkyong.com/java/java-enum-example/