Setting sessiontimeout in Liferay 6.1 - liferay-6

I want to reduce the session timeout from 30 minutes to 5 minutes.
I went through the guidelines of Liferay communtiy like setting following properties in to portal-ext.properties file.
session.timeout=5
session.timeout.warning=0
session.timeout.auto.extend=true
But this is not working.
Can any body help me please.

Session Time out can be set in portal-ext.properties and web.xml
i.e
portal-ext.properties
session.timeout=5
session.timeout.warning=0
session.timeout.auto.extend=false
web.xml
<session-config>
<session-timeout>5</session-timeout>
</session-config>
HTH

I found the solution in this thread: https://www.liferay.com/community/forums/-/message_boards/message/35735320
Change tomcat-{version}\conf\web.xml and
tomcat-{version}\webapps\ROOT\WEB-INF\web.xml by setting
session-timeout to 2 or even comment them out.
In your case change from
<session-config>
<session-timeout>30</session-timeout>
</session-config>
to
<session-config>
<session-timeout>5</session-timeout>
</session-config>
Also, as I noticed, the value of 0 disables timeout.

You should change the default timeout for the portal (Liferay) and the application server (tomcat for example).
The portal timeout is in [tomcat]/webapps/ROOT/WEB-INF/web.xml:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
The tomcat timeout is in [tomcat]/conf/web.xml:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
After a restart, you can check the Liferay Control Panel, in Server / Server Administration: choose Properties > Portal Properties, and search for "session.timeout".
You should see your new timeout value.
Hope this helps,
Philippe

Related

How to share the session in multiple WAR in EAR file in JBOSS-7.3.6

How to share the session in multiple WAR in EAR file in JBOSS-7.3.6 ?
we have following entry in jboss-all.xml JBoss 7.2 version (before migration)
<jboss xmlns="urn:jboss:1.0">
<shared-session-config xmlns="urn:jboss:shared-session-config:1.0">
<max-active-sessions>10</max-active-sessions>
<session-config>
<session-timeout>0</session-timeout>
<cookie-config>
<name>JSESSIONID</name>
<domain>domainName</domain>
<path>/cookiePath</path>
<comment>cookie comment</comment>
<http-only>true</http-only>
<secure>true</secure>
<max-age>-1</max-age>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
<replication-config>
<cache-name>web</cache-name>
<replication-granularity>SESSION</replication-granularity>
</replication-config>
</shared-session-config>
</jboss>
But now I'm putting the same xml.. or below xml snippet but could not work in JBOSS-7.3.6
<shared-session-config xmlns="urn:jboss:shared-session-config:2.0">
<distributable/>
<max-active-sessions>10</max-active-sessions>
-- rest copy from above
getting the following exception
21:50:31,221 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to URL: java.lang.IllegalStateException: WFLYCLWEBUT0001: Session idKL5QLs4873uTTnzT6JFg03_avxMEa8Q1-B4Jy4 is invalid
at org.wildfly.clustering.web.undertow.session.DistributableSession.validate(DistributableSession.java:265)
at org.wildfly.clustering.web.undertow.session.DistributableSession.validate(DistributableSession.java:257)
Can anyone suggest how to achieve ?
Thanks in advance !
First of all you have to know that sharing sessions between web applications would violate the JavaEE Servlet specification! That means your applications may not be portable! However you can check the coresponding documentation for more info: Development Guide / Configuring Session Sharing Between Subdeployments In Enterprise Archives

How to configure CharacterEncodingFilter in SpringBoot?

I encountered some encoding problems in learning Spring Boot;
I want to add a CharacterEncodingFilter like Spring 3.x.
just like this:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Since Spring Boot 1.4.2 registering your own CharacterEncodingFilter will work ONLY IF you disable Spring's own instance of this bean by setting spring.http.encoding.enabled=false in the application.properties.
However, one can resolve this matter without any Filter instantiation by adding these setting to the application.properties:
# Charset of HTTP requests and responses. Added to the "Content-Type" header if not set explicitly.
spring.http.encoding.charset=UTF-8
# Enable http encoding support.
spring.http.encoding.enabled=true
# Force the encoding to the configured charset on HTTP requests and responses.
spring.http.encoding.force=true
Source: Appendix A. Common application properties
Example code for your Application.java class, as proposed in the comments above:
#Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setForceEncoding(true);
characterEncodingFilter.setEncoding("UTF-8");
registrationBean.setFilter(characterEncodingFilter);
return registrationBean;
}
I also prefer application.properties configuration. But spring.http.encoding is depracted in the new spring boot versions (>2.3). So new application.setting should look like this:
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
I think there is no need to explicity write the following properties in application.properties file:
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
Instead if you go to pom.xml in your application and if you have the following, then spring will do the needful.

GWT: how to write client side logs into a log file in GWT

HI guys i am facing a big problem to write logs in a file in GWT.
i ahd gone through all the posts over internet but i didn't find any valuable information
there.
What i did ...
added remote logging servlet in web.xml file
inherited the logging module in my .gwt.xml file.
But my question is here now suppose i have written one log in my Entry Point class.
like ....
//Main class to start the appliation.....
public void onModuleLoad() {
Logger logger=Logger.getLogger(SYTMain.class.getName());
logger.info("Test Log in Module File");
}
and now i want to write this client side log into a test.log file .
How i can achieve this???/
Please if anyone knows the answer then plz provide me the complete solution, i don't want example on a fly. if you really know then only plz tell me don't give the answer which is already available in net.....
mY delivery date is very near so plz update on same ASAP, i'll be very thankful to you.
In your module file add the following:
<inherits name='com.google.gwt.logging.Logging'/>
<set-property name="gwt.logging.enabled" value="TRUE"/>
<!-- Set logging level to INFO -->
<set-property name="gwt.logging.logLevel" value="INFO"/>
<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED" />
<!-- Add compiler.stackMode to get a readable stacktrace from JavaScript
It generates a set of files in WEB-INF/deploy; those files need to
be placed on the server
-->
<set-property name="compiler.stackMode" value="emulated" />
In your web.xml add the following:
<servlet>
<servlet-name>remoteLoggingService</servlet-name>
<servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl</servlet-class>
</servlet>
<!-- Servlet Mapping -->
<servlet-mapping>
<servlet-name>remoteLoggingService</servlet-name>
<url-pattern>/<your module name>/remote_logging</url-pattern>
</servlet-mapping>
Replace <your module name> with as it says your module name.
To log simply use the code as your mentions. Use the import from java.util.logging.
On the client side, GWT compiles to Javascript, and Javascript cannot in general write files to the client's filesystem. (It should be obvious why this could be a bad idea). See for example this discussion.
If what you need is logs to use for debugging, one obvious solution is to have the logger append to a text area on the page. You can always copy and past manually into another file. Or, if you want to debug remotely, you could have the logger write to the server.
Just create a RPC service to log it into the server-side.
Use the servlet-side threadlocal to get info about the client: ThreadLocal to store ServletRequest and Response in servlet: what for?.

GWT: Servlet URL mapping gives a 404 error

I have read the other GWT Servlet questions, but I'm having trouble solving my problem still. My package is called Maps, and it has a service named MyService (which was set up according to a GWT Tutorial). The web.xml file includes the following:
<servlet>
<servlet-name>MyServiceImpl</servlet-name>
<servlet-class>com.xerox.maps.maps.server.MyServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServiceImpl</servlet-name>
<url-pattern>/Maps/service</url-pattern>
</servlet-mapping>
In MyService, I have the line:
#RemoteServiceRelativePath("service")
public interface MyService extends RemoteService { ...
However, when I try to make an RPC call, there is an error thrown. The details of the error say that it is a 404 HTTP error. How can I fix this, to make sure that the mapping is correct?
Edit 7.27
MyService.java contains the annotation:
#RemoteServiceRelativePath("service")
And web.xml contains:
<servlet-name>MyServiceImpl</servlet-name>
<url-pattern>/com.x.maps.Maps/service</url-pattern>
If I follow the XHR with FireBug, it shows me that there is a call to com.x.maps.Maps
404 Not found is thrown usually when service endpoint path is inferred wrongly by GWT. Try removing #RemoteServiceRelativePath("service") and recompile and check, If that does not work find out the URL endpoint of the service manually (by hitting likely paths from a browser till the error changes to 500 internal error) and then give the correct path as argument to #RemoteServiceRelativePath("correct/path"). Few trials I would try right away is #RemoteServiceRelativePath("/Maps/service") and #RemoteServiceRelativePath("Maps/service") without the slash
According to this tutorial:
https://developers.google.com/web-toolkit/doc/latest/tutorial/RPC
The servlet-mapping should be composed of the module "rename-to" and the service "RemoteServiceRelativePath". So, if you have, in your *.gwt.xml file, the following line:
<module rename-to='XXX'>
And in your *Service.java file you have the following line:
#RemoteServiceRelativePath("YYY")
Then, in your "web.xml" file, you should have the following lines:
<servlet-mapping>
<servlet-name>...servlet-name>
<url-pattern>/XXX/YYY</url-pattern>
</servlet-mapping>
New answer after all the comments :
Cool, you have made progress!
You are hitting this URL -
http://127.0.0.1:8888/com.x.maps.maps.Maps
With this POST data I assume - /%7C98544A4AED8C7D42E80C55859E9CEC4C%7Ccom.x.maps.maps.client.MyService%7CreadFile%7Cjava.lang.String/2004016611%7CPrinterList.xls%7C1%7C2%7C3%7C4%7C1%7C5%7C6%7C
This is where the problem is, your servlet is mapped to respond to XHR requests coming to <url-pattern>/Maps/service</url-pattern> but you are hitting /com.x.maps.maps.Maps instead. Hence you are getting the 404 path not found status code.
Alter the url-pattern on the server-side web.xml to match what the browser is making,
OR
Alter the GWT code using the RemoteServiceRelativePath annotation to make the request to /Maps/service instead of to /com.x.maps.maps.Maps
I have had the same problem but I solved it changing the url-pattern of the Servlet in the web.xml
Try to put in your web.xml the path to the directory where your GWT javascript module is generated, behind WEB-INF/deploy. in my case:
<url-pattern>/gwtmodulemain/selection</url-pattern>
You can also rename your module name in your gwt.xml file:
<module rename-to='gwtmodulemain'>
so you can refer your module from your HTML in this way:
<script type="text/javascript" language="javascript" src="gwtmodulemain/gwtmodulemain.nocache.js"></script>
Good luck!

What could be the problem of a queue that does not have a jndi-name in jboss.xml?

I'm trying to migrate from jboss 4 to jboss 6 with an application i have running on jboss 4.
But when i try to run the application i get the following exception:
DEPLOYMENTS IN ERROR:
Deployment "jboss.j2ee:binding=message-driven-bean,jndiName=local/ProjectMessage#15042526,plugin=invoker,service=EJB" is in error due to the following reason(s): org.jboss.deployment.DeploymentException: The message-destination 'PhysicalQueue' has no jndi-name in jboss.xml
This is a part of the jboss.xml file:
<message-driven>
<ejb-name>ProjectMessage</ejb-name>
<destination-jndi-name>queue/PhysicalQueue</destination-jndi-name>
</message-driven>
I have created the queue in the jmx-console.
I have tried to search for a solution for this problem, but i can't seem to find any.
Does anybody have a clue/suggestion of what could be wrong?
Thanks in advance!
The MDB error occurs because the queue does not exist when the MDB deploys. Once you create the queue in JMXConsole, it's too late (unless you're really fast...:) ) and the queue configuration is not retained after AS restart.
You need to define your queue in deploy/hornetq/hornetq-jms.xml.
Something like this:
<queue name="PhysicalQueue">
<entry name="/queue/PhysicalQueue"/>
</queue>