
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
<version>1.3.4</version>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-jsr160</artifactId>
<version>1.3.4</version>
</dependency>
@RestController
@RequestMapping("/v1")
public class RestServices {
private EntityManagerFactory emf;
final static Logger LOGGER = LoggerFactory.getLogger(RestServices.class);//ROOT logger
final static Logger CUSTOMLOGGER = LoggerFactory.getLogger("sampleRestServices");//Custom logger
@PersistenceUnit
public void setEntityManagerFactory(EntityManagerFactory emf) {
this.emf = emf;
}
@RequestMapping(value = "/emp", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Status> fetch() {
EntityManager em = this.emf.createEntityManager();
HttpHeaders httpHeaders = new HttpHeaders();
try {
//LOGGER.getName();
//LOGGER.error(LOGGER.getName());
//Standard log
LOGGER.info("\n\n=======RESTSERVICE LOG \t\t INFO Message LOG============\n\n");
LOGGER.error("\n\n======RESTSERVICE LOG \t\t ERROR Message LOG===========\n\n");
LOGGER.warn("\n\n=======RESTSERVICE LOG \t\t WARNING Message LOG=========\n\n");
LOGGER.debug("\n\n======RESTSERVICE LOG \t\t DEBUG Message LOG =========\n\n");
//Custom log
CUSTOMLOGGER.info("\n\n=======REST2 LOG \t\t INFO Message LOG============\n\n");
CUSTOMLOGGER.error("\n\n======REST2 LOG \t\t ERROR Message LOG===========\n\n");
CUSTOMLOGGER.warn("\n\n=======REST2 LOG \t\t WARNING Message LOG=========\n\n");
CUSTOMLOGGER.debug("\n\n======REST2 LOG \t\t DEBUG Message LOG =========\n\n");
System.out.println("----------------------------------in rest block-----------------");
Query query = em.createQuery("from Employee as p");
return new ResponseEntity(new Status("Success","Records Returned",query.getResultList()), httpHeaders, HttpStatus.ACCEPTED);
}
finally {
if (em != null) {
em.close();
}
}
}
@RequestMapping(value = "/emp", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Status> create(@RequestBody List<Employee> empLst) {
EntityManager em = this.emf.createEntityManager();
HttpHeaders httpHeaders = new HttpHeaders();
try {
em.getTransaction().begin();
for(Employee obj:empLst){
em.persist(obj);
}
em.getTransaction().commit();
return new ResponseEntity(new Status("Success","Records Created"), httpHeaders, HttpStatus.ACCEPTED);
}
finally {
if (em != null) {
em.close();
}
}
}
}
<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Java Web Application</display-name>
<resource-ref>
<res-ref-name>jdbc/sampleTest-hdi</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
</resource-ref>
<servlet>
<servlet-name>oDataServlet</servlet-name>
<servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.apache.olingo.odata2.core.rest.app.ODataApplication</param-value>
</init-param>
<init-param>
<param-name>org.apache.olingo.odata2.service.factory</param-name>
<param-value>com.sap.sample.fnd.odatafactory.SampleCustomOdataJpaServiceFactory</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>oDataServlet</servlet-name>
<url-pattern>/sample.svc/v1/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/rest/api/*</url-pattern>
</servlet-mapping>
<!-- jolokia params add - RAJNISH -->
<servlet>
<servlet-name>jolokia-agent</servlet-name>
<servlet-class>org.jolokia.http.AgentServlet</servlet-class>
<init-param>
<description>
Class names (comma separated) of RequestDispatcher used in addition
to the LocalRequestDispatcher
</description>
<param-name>dispatcherClasses</param-name>
<param-value>org.jolokia.jsr160.Jsr160RequestDispatcher</param-value>
</init-param>
<init-param>
<description>
Debugging state after startup. Can be changed via
the Config MBean during runtime
</description>
<param-name>debug</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<description>
Entries to keep in the history. Can be changed during
runtime via the config MBean
</description>
<param-name>historyMaxEntries</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<description>
Maximum number of entries to keed in the local
debug history if switched on. Can be change via
the config MBean during runtime.
</description>
<param-name>debugMaxEntries</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<description>
Maximum depth when traversing bean properties.
If set to 0, depth checking is disabled
</description>
<param-name>maxDepth</param-name>
<param-value>15</param-value>
</init-param>
<init-param>
<description>
Maximum size of collections returned when
serializing to JSON. When set to 0
collections are not truncated.
</description>
<param-name>maxCollectionSize</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<description>
Maximum number of objects which is traversed
when serializing a single response. Use this
as airbag to avoid boosting your memory and
network traffic. Nevertheless when set to 0
not limit is used.
</description>
<param-name>maxObjects</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<description>
Options specific for certain application
server detectors. Detectors can evaluate these
options and perform a specific initialization based
on these options. The value is a JSON object with
the detector's name as key and the options as value.
E.g. '{glassfish: {bootAmx: false}}' would prevent
the booting of the AMX subsystem on a glassfish with
is done by default.
</description>
<param-name>detectorOptions</param-name>
<param-value>{}</param-value>
</init-param>
<init-param>
<description>
This option specifies in which order the key-value properties within
ObjectNames as returned by "list" or "search" are returned. By default
this is the so called 'canonical order' in which the keys are sorted
alphabetically. If this option is set to "false", then the natural
order is used, i.e. the object name as it was registered. This option
can be overridden with a query parameter of the same name.
</description>
<param-name>canonicalNaming</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>
Whether to include a stacktrace of an exception in case
of an error. By default it it set to "true" in which case
the stacktrace is always included. If set to "false", no
stacktrace is included. If the value is "runtime" a stacktrace
is only included for RuntimeExceptions. This global option
can be overridden with a query parameter.
</description>
<param-name>includeStackTrace</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>
When this parameter is set to "true", then an exception thrown
will be serialized as JSON and included in the response
under the key "error_value". By default it is "false". This global
option can be overridden by a query parameter of the same name.
</description>
<param-name>serializeException</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<description>
If discoveryEnabled is set to true, then this servlet will listen
for multicast discovery request and responds with its agent URL and
other server specific information. Instead of setting this confog variable,
discovery can be also enabled via the system property "jolokia.discoveryEnabled"
or the environment variable "JOLOKIA_DISCOVERY_ENABLED".
In addition the config parameter "discoveryAgentUrl" can be used to set the the agent's URL.
By default, auto detection (after the first request was processed by the servlet)) of the URL is used.
If the URL is set, then discovery is automatically enabled (i.e. there is
no need to set "discoveryEnabled=true"). This configuration option
is especially useful if the WAR is used in a proxy setup. Instead of setting the URL
here, it can be set also either via the system property "jolokia.discoveryAgentUrl" or the
environment variable "JOLOKIA_DISCOVERY_AGENT_URL".
</description>
<param-name>discoveryEnabled</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jolokia-agent</servlet-name>
<url-pattern>/jolokia/*</url-pattern>
</servlet-mapping>
</web-app>
Code snippet of application.properties
# parameters of sample application
xs.appname=sampleTest
logEnabled = true
odata.enableError = true
endpoints.jmx.domain=sampleTest
endpoints.jmx.unique-names=true
jolokia.config.debug=true
endpoints.jolokia.enabled=false
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
<conversionRule conversionWord="guid" converterClass="com.sap.xs.logging.logback.converters.UUIDGenerator"/>
<conversionRule conversionWord="msgArgs" converterClass="com.sap.xs.logging.logback.converters.MSGArgs"/>
<conversionRule conversionWord="msgArgsNo" converterClass="com.sap.xs.logging.logback.converters.MSGArgsNo"/>
<conversionRule conversionWord="msgType" converterClass="com.sap.xs.logging.logback.converters.MsgType"/>
<conversionRule conversionWord="msg" converterClass="com.sap.xs.logging.logback.converters.MSG"/>
<conversionRule conversionWord="timeZone" converterClass="com.sap.xs.logging.logback.converters.TimeZone"/>
<jmxConfigurator />
<property name="max.retention.days" value="60" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>#2.0#%d{yyyy MM dd HH:mm:ss.SSS}#%timeZone#%level#%replace(%logger){'([\\#])','\\$1'}#%n%mdc{MsgCode}#%mdc{CSNComponent}#%mdc{DCComponent}#%guid#%mdc{DSRCorrelationId}#%replace(%mdc{Application}){'([\\#])','\\$1'}#%class#%replace(%mdc{User}){'([\\#])','\\$1'}#%mdc{Session}#%mdc{Transaction}#%mdc{DSRRootContextId}#%mdc{DSRTransaction}#%mdc{DSRConnection}#%mdc{DSRCounter}#%replace(%thread){'([\\#])','\\$1'}#%msgType#%mdc{ResourceBundle}#%n%msg#%msgArgsNo%msgArgs%n%n</pattern>
</encoder>
</appender>
<!-- Deprecated Audit Log Loggers (remove in HANA 2 SP 1 or SP2)-->
<logger name="/Audit/Configuration" level="ALL" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="/Audit/DataAccess" level="ALL" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="/Audit/SecurityEvent" level="ALL" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.apache.catalina" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost]" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]" level="INFO"
additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]" level="INFO"
additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="com.sap.xs.logging.catalina.LoggingLevelChangeListener" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Performance" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications/Common" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications/Common/Security" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications/Common/Backup" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications/Common/Archiving" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications/Common/Resources" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications/Common/Configuration" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications/Common/Failover" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/Applications/Common/Infrastructure" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/Database" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/Network" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/Server" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/Security" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/UserInterface" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/Configuration" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/Configuration/Logging" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/Logging" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/EnterpriseServices" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="/System/Changes" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="sampleRestServices" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE" />
</logger>
<root level="ERROR">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
<root level="ERROR">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="sampleRestServices" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE" />
</logger>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>#2.0#%d{yyyy MM dd HH:mm:ss.SSS}#%timeZone#%level#%replace(%logger){'([\\#])','\\$1'}#%n%mdc{MsgCode}#%mdc{CSNComponent}#%mdc{DCComponent}#%guid#%mdc{DSRCorrelationId}#%replace(%mdc{Application}){'([\\#])','\\$1'}#%class#%replace(%mdc{User}){'([\\#])','\\$1'}#%mdc{Session}#%mdc{Transaction}#%mdc{DSRRootContextId}#%mdc{DSRTransaction}#%mdc{DSRConnection}#%mdc{DSRCounter}#%replace(%thread){'([\\#])','\\$1'}#%msgType#%mdc{ResourceBundle}#%n%msg#%msgArgsNo%msgArgs%n%n</pattern>
</encoder>
</appender>
final static Logger LOGGER = LoggerFactory.getLogger(RestServices.class);//ROOT logger
final static Logger CUSTOMLOGGER = LoggerFactory.getLogger("sampleRestServices");//Custom logger
//Standard log
LOGGER.info("\n\n=======RESTSERVICE LOG \t\t INFO Message LOG============\n\n");
LOGGER.error("\n\n======RESTSERVICE LOG \t\t ERROR Message LOG===========\n\n");
LOGGER.warn("\n\n=======RESTSERVICE LOG \t\t WARNING Message LOG=========\n\n");
LOGGER.debug("\n\n======RESTSERVICE LOG \t\t DEBUG Message LOG =========\n\n");
//Custom log
CUSTOMLOGGER.info("\n\n=======REST2 LOG \t\t INFO Message LOG============\n\n");
CUSTOMLOGGER.error("\n\n======REST2 LOG \t\t ERROR Message LOG===========\n\n");
CUSTOMLOGGER.warn("\n\n=======REST2 LOG \t\t WARNING Message LOG=========\n\n");
CUSTOMLOGGER.debug("\n\n======REST2 LOG \t\t DEBUG Message LOG =========\n\n");
2016-11-24T17:50:26.16+0530 [App/0] OUT =======RESTSERVICE LOG INFO Message LOG============
2016-11-24T17:50:26.16+0530 [App/0] OUT #
2016-11-24T17:50:26.16+0530 [App/0] OUT #2.0#2016 11 24 12:20:26.167#+00:00#ERROR#com.sap.sample.restServices.RestServices#
2016-11-24T17:50:26.16+0530 [App/0] OUT ###D7DB9BC3DCDF486D9ED629AD51CB0813##sample-java1#com.sap.sample.restServices.RestServices########http-bio-0.0.0.0-61011-exec-10#PLAIN##
2016-11-24T17:50:26.16+0530 [App/0] OUT ======RESTSERVICE LOG ERROR Message LOG===========
2016-11-24T17:50:26.16+0530 [App/0] OUT #2.0#2016 11 24 12:20:26.167#+00:00#WARN#com.sap.sample.restServices.RestServices#
2016-11-24T17:50:26.16+0530 [App/0] OUT =======RESTSERVICE LOG WARNING Message LOG=========
2016-11-24T17:50:26.16+0530 [App/0] OUT #
2016-11-24T17:50:26.16+0530 [App/0] OUT #
2016-11-24T17:50:26.16+0530 [App/0] OUT ###AE1F1C5F45F14546A8CD8A4F1B8B81C8##sample-java1#com.sap.sample.restServices.RestServices########http-bio-0.0.0.0-61011-exec-10#PLAIN##
2016-11-24T17:50:26.16+0530 [App/0] OUT #2.0#2016 11 24 12:20:26.167#+00:00#DEBUG#com.sap.sample.restServices.RestServices#
2016-11-24T17:50:26.16+0530 [App/0] OUT ###A833A286D77C44BAAFFDDF2A2836112B##sample-java1#com.sap.sample.restServices.RestServices########http-bio-0.0.0.0-61011-exec-10#PLAIN##
2016-11-24T17:50:26.16+0530 [App/0] OUT ======RESTSERVICE LOG DEBUG Message LOG =========
2016-11-24T17:50:26.16+0530 [App/0] OUT #
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
6 | |
6 | |
6 | |
5 |