xpush_config.xml
When X-PUSH is run, it refers to $XPUSH_HOME/conf/xpush_config.xml. The services and attributes of the setting file are described below.
XML file tag consists of server, service, attribute, depends, etc. and the setting is controlled through attribute tag.
Tag | Description |
---|---|
server | root tag with multiple services |
service | Tag with the service to be used in xpush defined |
attribute | Tag with attributes of the service defined |
depends | Service dependent tag - Service operation order can be controlled with depends tag. - The corresponding service is started after the service set in depends is started. |
Randomly changing fixed values or removing attributes may affect the system.
Services
WebPublisher
WebPublisher service connects WebClient and processes data.
Attribute | Description |
---|---|
ServerBindAddress | Address to which WebPublisher service will be bound default: 0.0.0.0 |
Port | Port to which WebPublisher service will be bound default: 10080 |
ProtocolServiceName | Name of the protocol service to be used in WebPublisher |
CertificateServiceName | The service name for which SSL certificate is set |
IsHttps | Whether to use HTTPS. Set it to true to use it. To use HTTPS, CertificateService must be set. |
<service name="WebPublisher" ...> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="Port">10080</attribute> <attribute name="ProtocolServiceName"> #MiPlatformReliabilityNettyWithProjectIDProtocol </attribute> <attribute name="CertificateServiceName">#CertificateService</attribute> <attribute name="IsHttps">false</attribute> <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends> <depends>CertificateService</depends> <depends>Publisher</depends> <depends>Log</depends> </service>
RuntimePublisher
RuntimePublisher service connects RuntimeClient and processes data.
Attribute | Description |
---|---|
ServerBindAddress | Address to which RuntimePublisher service will be bound default: 0.0.0.0 |
Port | Port to which RuntimePublisher service will be bound default: 10081 |
ProtocolServiceName | Name of the protocol service to be used in RuntimePublisher |
CertificateServiceName | The service name for which SSL certificate is set |
IsSSL | Whether to use an SSL connection. Set it to true to use it. To use an SSL connection, CertificateService must be set. |
<service name="RuntimePublisher" ..> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="Port">10081</attribute> <attribute name="ProtocolServiceName"> #MiPlatformReliabilityNettyWithProjectIDProtocol </attribute> <attribute name="CertificateServiceName">#CertificateService</attribute> <attribute name="IsSSL">false</attribute> <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends> <depends>CertificateService</depends> <depends>Publisher</depends> <depends>Log</depends> </service>
CertificateService
CertificateService is a service that performs SSL certificate related processing.
Attribute | Description |
---|---|
Path | SSL certificate location |
Password | SSL server key |
IsEncrypted | Whether to use encryption |
CertificatesPasswordEncryptorClassName | Class name to encrypt/decrypt the password |
<service name="CertificateService"> <attribute name="Path">C:/xpush-3.0.0/conf/cacao.tobesoft.co.kr.jks</attribute> <attribute name="Password">1234567890</attribute> <attribute name="IsEncrypted">false</attribute> <attribute name="CertificatesPasswordEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute> </service>
Publisher
Publisher manages connected clients and JMX settings.
Servant: Object that manages one client
Container: Object that manages servants
Attribute | Description |
---|---|
ProtocolServiceName | Name of the protocol used in Publisher service |
PublishContainerFactoryServiceName | ContainerFactory service name |
ContainerNum | Number of containers |
ServantGarbageInterval | Servant's Keep message check period |
| Deleted |
| Deleted |
| Deleted |
QueueServiceNames | Main queue service name |
| Not used |
| Not used |
| Not used |
InsertMsgQueueServiceName | Message supply queue service name |
NotificationQueueServiceName | Notification queue service name |
DbcpServiceName | DB connection service name |
ServerBindAddress | JMX monitoring binding address |
isJMX | Whether to use JMX |
IsJMXpassword | Whether to use JMX password |
JMXrmiRegistryPort | JMX rmi registration port |
JMXrmiServerPort | JMX rmi server port |
IsSystemMonitor | Whether to monitor system data (CPU, etc.) |
ConnectionManagerServiceName | Client connection management service name |
<service name="Publisher" > <attribute name="ProtocolServiceName"> #MiPlatformReliabilityNettyWithProjectIDProtocol </attribute> <attribute name="PublishContainerFactoryServiceName"> #PublishContainerFactory </attribute> <attribute name="ContainerNum">10</attribute> <attribute name="ServantGarbageInterval">30000</attribute> <attribute name="ThreadPoolCoreSize">4</attribute> <attribute name="ThreadPoolMaxSize">8</attribute> <attribute name="ThreadPoolKeepAliveTime">86400000</attribute> <attribute name="QueueServiceNames"> #MonitorablePushMessageQueueService </attribute> <attribute name="WebPort">-1</attribute> <attribute name="SessionInterval">600</attribute> <attribute name="LogFixLineCount">100</attribute> <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute> <attribute name="NotificationQueueServiceName"> #NotificationQueueService </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="isJMX">false</attribute> <attribute name="IsJMXpassword">false</attribute> <attribute name="JMXrmiRegistryPort">10085</attribute> <attribute name="JMXrmiServerPort">10086</attribute> <attribute name="IsSystemMonitor">false</attribute> <depends>InsertMsgQueue</depends> <depends>NotificationQueueService</depends> <depends>MonitorablePushMessageQueueService</depends> <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends> <depends>PublishContainerFactory</depends> <depends>DbcpService</depends> <depends>Log</depends> <attribute name="ConnectionManagerServiceName"> #connectionManagerService </attribute> <depends>connectionManagerService</depends> </service>
When trying to activate the IsSystemMonitor attribute, it may not operate depending on the OS.
Number of Servant Containers and Servant per Container
The default value set at the time of deployment is the value set assuming the service for 5,000 simultaneous clients. This value was obtained through many performance tests. Therefore, it is recommended to use the value set during the deployment.
In order to process more than 5,000 client connections, the number of Servant Containers and Containers must be modified.
A Servant is an object that manages one client and a Servant Container is an object that manages a specific number of Servants. Each Servant Container is operated as a separate thread and it sends messages to all Servants it manages when each Servant Container receives a message to send it to the client. As it is operated by an individual thread, it is possible to process subsequent messages without having to complete the transmission of the entire Servant, and as a result, the processing time is shortened.
The default value set at the time of deployment is 10 Containers and 500 Servants. Since one Servant Container manages 500 Servants, a total of 5,000 (= Number of Containers * Number of Servants = 10 * 500) clients can be processed. If a new connection is requested when 5,000 users are connected, the connection is rejected rather than accepted.
MonitorablePushMessageQueueService
MonitorablePushMessageQueueService is a queue that waits for real-time and reliable message transmission.
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue No capacity limit when -1. |
<service name="MonitorablePushMessageQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
MiPlatformReliabilityNettyWithProjectIDProtocol
MiPlatformReliabilityNettyWithProjectIDProtocol is a service that defines the protocol between server and client.
Attribute | Description |
---|---|
AuthenticatorServiceName | Authentication service name used in the protocol |
usedACKN | Whether to use ACKN - ACKN is whether to update DB when it receives a response from nexacro engine |
| Under development |
KeepAlive | keepAlive message maintainable time |
TimeOut | WebPush writing timeout (seconds) |
| Deleted |
| Deleted |
SelectMsgQueueServiceName | Name of client unreceived message request queue |
UpdateMsgQueueServiceName | Name of client receipt response message queue |
AutoInsertTopic | Whether to automatically register topic to DB when subscribed |
UserRegister | Whether to register user when automatic topic registration is activated |
insertTopicMsgQueueServiceName | Name of user registration and unreceived message number inquiry queue |
DbcpServiceName | DB connection service name |
RepositoryServiceName | DB storage service name |
<service name="CertificateService"> <attribute name="Path">C:/xpush-3.0.0/conf/cacao.tobesoft.co.kr.jks</attribute> <attribute name="Password">1234567890</attribute> <attribute name="IsEncrypted">false</attribute> <attribute name="CertificatesPasswordEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute> </service>
MiPlatformProtocolReliabilityAuthenticator
MiPlatformProtocolReliabilityAuthenticator performs client-related authentication service processing.
Attribute | Description |
---|---|
AuthenticatorClassName | Client authentication class path |
<service name="MonitorablePushMessageQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
PublisherContainerFactory
PublisherContainerFactory is a container generation service.
Attribute | Description |
---|---|
RegisterContainer | Whether to register container |
MaxServantNum | Maximum number of servants per container |
ThreadPoolCoreSize | Thread pool minimum size |
ThreadPoolMaxSize | Thread pool maximum size |
ThreadPoolKeepAliveTime | Thread pool holding time - Time remaining in the thread pool when there are more idle threads in the thread pool than the minimum size |
QueueServiceName | Container queue service name |
<service name="PublishContainer"> <attribute name="RegisterContainer">true</attribute> <attribute name="MaxServantNum">500</attribute> <attribute name="ThreadPoolCoreSize">8</attribute> <attribute name="ThreadPoolMaxSize">16</attribute> <attribute name="ThreadPoolKeepAliveTime">86400000</attribute> <attribute name="QueueServiceName">#ContainerQueue</attribute> <depends> <service name="ContainerQueue" ...> <attribute name="MaxCapacity">20000</attribute> </service> </depends> <depends>Log</depends> <depends>MonitorablePushMessageQueueService</depends> </service>
ContainerQueue
Queue waiting to deliver messages from container
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="ContainerQueue"> <attribute name="MaxCapacity">20000</attribute> </service>
Provider
Message supply service
Attribute | Description |
---|---|
ServerBindAddress | Address to which Provider service will be bound default: 0.0.0.0 |
Port | Port to which Provider service will be bound default: 10082 |
SocketProviderProtocolName | Name of the protocol service to be used in Provider service |
CertificateServiceName | Name of certificate service to be used in Provider service |
IsSSL | Whether to use SSL communication (under development) |
<service name="Provider"> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="Port">10082</attribute> <attribute name="SocketProviderProtocolName"> #SocketProviderJsonProtocol </attribute> <attribute name="CertificateServiceName">#CertificateService</attribute> <attribute name="IsSSL">false</attribute> <depends>SocketProviderJsonProtocol</depends> <depends>CertificateService</depends> <depends>SocketPushMessageProvider</depends> <depends>Log</depends> </service>
SocketPushMessageProvider
Provider sub-service
Attribute | Description |
---|---|
SocketProviderProtocolName | Name of the protocol service to be used in Provider service |
QueueServiceNames | Real-time and reliable message transmission-related main queue service name |
<service name="SocketPushMessageProvider"> <attribute name="SocketProviderProtocolName"> #SocketProviderJsonProtocol </attribute> <attribute name="QueueServiceNames"> #MonitorablePushMessageQueueService </attribute> <depends>MonitorablePushMessageQueueService</depends> <depends>SocketProviderJsonProtocol</depends> <depends>Log</depends> </service>
SocketProviderJsonProtocol
Provider protocol service
Attribute | Description |
---|---|
ProviderVersion | provider protocol version - Fixed value |
AuthenticatorServiceName | Provider authentication service name |
| Provider connect holding time (not used) |
TimeOut | Write data timeout |
MessageSize | Reliable message size limit |
NodeManagerServiceName | Clustering service name |
NotificationQueueServiceName | Mobile notification queue service name |
<service name="SocketProviderJsonProtocol"> <attribute name="ProviderVersion">2</attribute> <attribute name="AuthenticatorServiceName"> #SocketProviderProtocolAuthenticator </attribute> <attribute name="KeepAlive">60000</attribute> <attribute name="TimeOut">30000</attribute> <attribute name="MessageSize">4000</attribute> <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute> <attribute name="NodeManagerServiceName">#nodeManagerService</attribute> <attribute name="NotificationQueueServiceName"> #NotificationQueueService </attribute> <depends>NotificationQueueService</depends> <depends>InsertMsgQueue</depends> <depends>nodeManagerService</depends> <depends>Log</depends> </service>
SocketProviderProtocolAuthenticator
Provider authentication service name
Attribute | Description |
---|---|
AuthenticatorClassName | Class name to be used for authentication |
<service name="SocketProviderProtocolAuthenticator"> <attribute name="AuthenticatorClassName"> com.nexacro.xpush.fw.service.auth.UserProfileDummyAuthenticator </attribute> </service>
PushMonitor
PushMonitor is a service that can perform monitoring related processing.
Attribute | Description |
---|---|
MonitorProtocolServiceName | Name of the protocol service to be used in monitoring service |
MonitorableStreamProviderServiceName | Monitoring service output service name |
ServerBindAddress | Address to bind in monitoring service |
Port | Port to bind in monitoring service default: 10083 |
QueueServiceNames | Real-time and reliable message transmission-related main queue service name |
<service name="PushMonitor"> <attribute name="MonitorProtocolServiceName">#MonitorProtocol</attribute> <attribute name="MonitorableStreamProviderServiceName"> #ConsoleLogWriter </attribute> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="Port">10083</attribute> <attribute name="QueueServiceNames"> #MonitorablePushMessageQueueService</attribute> <depends>MonitorProtocol</depends> <depends>MonitorablePushMessageQueueService</depends> <depends>Log</depends> </service>
MonitorProtocol
MonitorProtocol is a service that defines the protocol to be used in the PushMonitor service.
Attribute | Description |
---|---|
AuthenticatorServiceName | Monitoring authentication service name |
DbcpServiceName | DB connection service name |
<service name="MonitorProtocol"> <attribute name="AuthenticatorServiceName"> #MonitorProtocolAuthenticator </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <depends> <service name="MonitorProtocolAuthenticator"> <attribute name="AuthenticatorClassName"> com.nexacro.xpush.fw.service.auth.UserPropertiesEncryptAuthenticator </attribute> </service> </depends> <depends>DbcpService</depends> <depends>Log</depends> </service>
InsertMsgQueue
The queue to store messages supplied from Provider
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="InsertMsgQueue"> <attribute name="MaxCapacity">20000</attribute> </service>
SelectMsgQueue
Client unreceived message request queue
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="SelectMsgQueue"> <attribute name="MaxCapacity">-1</attribute> </service>
UpdateMsgQueue
Client receipt response message queue
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="InsertMsgQueue"> <attribute name="MaxCapacity">-1</attribute> </service>
InsertTopicMsgQueue
Client user registration and unreceived message number inquiry queue
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="InsertTopicMsgQueue"> <attribute name="MaxCapacity">-1</attribute> </service>
EtcQueue
Notification failure processor queue
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="EtcQueue"> <attribute name="MaxCapacity">-1</attribute> </service>
EtcService
Notification failure processor service
Attribute | Description |
---|---|
EtcHandlerThreadPoolCount | Notification failure processor handler thread pool number |
EtcHandlerProcessingAtOnceCount | Number of data to be fetched at once from notification failure processor queue |
ConnectionManagerServiceName | Client connection management service name |
EtcQueueServiceName | Notification failure processor queue name |
DbcpServiceName | DB connection service name |
EtcProcessorName | Notification failure processor class name |
<service name="EtcService"> <attribute name="EtcHandlerThreadPoolCount">1</attribute> <attribute name="EtcHandlerProcessingAtOnceCount">1</attribute> <attribute name="ConnectionManagerServiceName"> #connectionManagerService </attribute> <attribute name="EtcQueueServiceName">#EtcQueue</attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="EtcProcessorName"> com.nexacro.xpush.service.EtcService.EtcProcessorImpl </attribute> </service>
RepositoryService
Service that receives reliable messages and stores them in the database
Attribute | Description |
---|---|
ProviderHandlerThreadPoolCount | Number of threads in the reliable message thread pool The number of threads to operate the handler, which processes messages received from Message Provider, in the thread pool is set. |
RequestHandlerThreadPoolCount | Number of threads in the unreceived message thread pool The number of threads to operate the handler, which processes unreceived messages requested from Nexcaro Client, in the thread pool is set. |
ResponseHandlerThreadPoolCount | Number of threads in the receipt confirmed message thread pool The number of threads to operate the handler, which processes receipt confirmed messages from nexacro Client, in the thread pool is set. |
ResponseHandlerBatchAtOnceCount | It is the number of batches running at once to DB for receipt confirmed and completed response received from Client. |
ResponseHandlerProcessingAtOnceCount | It is the number of messages fetched at once from Repository Queue in which messages received from nexacro Client are accumulated. |
ProviderHandlerProcessingAtOnceCount | It is the number of messages fetched at once from Repository Queue in which messages are received from Message Provider. |
TopicHandlerThreadPoolCount | Number of threads in the topic processing thread pool The number of threads to operate the handler, which processes protocols related to TOPIC from nexacro Client, in the thread pool is set. |
useOfTrigger | Whether to use trigger (used only in Oracle) |
IsRequestOnlyStateZero | Unreceived message request range When a client requests an unreceived message, it refers to the MESSAGE_STATE column of the T_USER_MESSAGE table. Basically, if the message status is 0, the message has not been received, if it is 1, the message is received, and if it is 2, the client has confirmed the receipt of the message. |
limitFailCount | Limit number of consecutive failures If the number of failures continuously exceeds, it is identified as a DB problem, and when DB processing fails, InsertMessageQueue is blocked so that no more messages are received. |
retryDBPeriodMillis | DB recovery interval (Milliseconds) The time interval to access the DB to determine whether it is normal or not when InsertMessageQueue is blocked |
availablePeriod | The default available period for reliable messages is set (day) |
maximumAvailablePeriod | The maximum available period for reliable messages is set (day) |
<service name=" RepositoryService "> <attribute name="ProviderHandlerThreadPoolCount">10</attribute> <attribute name="RequestHandlerThreadPoolCount">10</attribute> <attribute name="ResponseHandlerThreadPoolCount">10</attribute> <attribute name="ResponseHandlerProcessingAtOnceCount">1000</attribute> <attribute name="ProviderHandlerProcessingAtOnceCount">10</attribute> <attribute name="TopicHandlerThreadPoolCount">10</attribute> <attribute name="useOfTrigger">true</attribute> <attribute name="IsRequestOnlyStateZero">true</attribute> <attribute name="limitFailCount">100</attribute> <attribute name="retryDBPeriodMillis">60000</attribute> <attribute name="availablePeriod">-1</attribute> <attribute name="maximumAvailablePeriod">-1</attribute> <attribute name="PublisherServiceName">#Publisher</attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute> <attribute name="SelectMsgQueueServiceName">#SelectMsgQueue</attribute> <attribute name="UpdateMsgQueueServiceName">#UpdateMsgQueue</attribute> <attribute name="InsertTopicMsgQueueServiceName"> #InsertTopicMsgQueue </attribute> <attribute name="NodeManagerServiceName"> #nodeManagerService </attribute> <attribute name="NotificationQueueServiceName"> #NotificationQueueService </attribute> <depends>NotificationQueueService</depends> <depends>Publisher</depends> <depends>UpdateMsgQueue</depends> <depends>SelectMsgQueue</depends> <depends>InsertMsgQueue</depends> <depends>InsertTopicMsgQueue</depends> <depends>DbcpService</depends> <depends>Log</depends> </service>
DbcpService
Service to manage database connection Pool
Attribute | Description |
---|---|
username | User ID to access the Database |
password | User password to access the Database |
connectUri | URI of the Database to be connected |
jdbcClassName | Class Name of JDBC to be connected |
maxActive | Maximum number of connections that can be used simultaneously for service |
maxIdle | Maximum number of idle connections that can be maintained in the connection pool |
minIdle | Minimum number of idle connections that can be maintained in the connection pool |
maxWait | If the number of connections being used in the connection pool is the number of maxActive, it waits as much as maxWait. If there is no extra connection available even after maxWait, an error occurs. |
validationQuery | The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query MUST be an SQL SELECT statement that returns at least one row. |
testOnBorrow | Running test when getting a connection from Pool |
testOnReturn | Running test when returning a connection to Pool |
testWhileIdle | Whether to run a test on the idle connection in Pool |
timeBetweenEvictionRunsMillis | The interval at which Evictor thread runs Evictor thread running is disabled when -1 |
numTestsPerEvictionRun | Testing number of a connection in the pool |
minEvictableIdleTimeMillis | Connection removing time by checking the idle time of connection |
UserInfoEncryptorClassName | Class name that encrypts/decrypts DB access account information DB |
isEncrypted | True if DB access account is encrypted and false otherwise |
Please refer to the Apache Commons DBCP site for more information.
http://commons.apache.org/proper/commons-dbcp/configuration.html
<service name="DbcpService"> <attribute name="username">sa</attribute> <attribute name="password"></attribute> <attribute name="connectUri">jdbc:h2:tcp://localhost/~/test</attribute> <attribute name="jdbcClassName">org.h2.Driver</attribute> <attribute name="maxActive">10</attribute> <attribute name="maxIdle">0</attribute> <attribute name="minIdle">5</attribute> <attribute name="maxWait">-1</attribute> <attribute name="validationQuery">select 1 from dual</attribute> <attribute name="testOnBorrow">true</attribute> <attribute name="testOnReturn">false</attribute> <attribute name="testWhileIdle">false</attribute> <attribute name="timeBetweenEvictionRunsMillis">-1</attribute> <attribute name="numTestsPerEvictionRun">3</attribute> <attribute name="minEvictableIdleTimeMillis">1800000</attribute> <attribute name="UserInfoEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute> <attribute name="isEncrypted">false</attribute> <depends>Log</depends> </service>
CronTabScheduleService
Service to set up scheduling
Attribute | Description |
---|---|
type="java.lang.String" | Minute (0-59) Hour (0-23) Date (1-31) Month (1-12) Day of the week (0-6)
|
<service name=" CronTabScheduleService "> ... <argument type="java.lang.String"> 0 0 1 * * </argument> <!-- Delete messages at 00:00 on the 1st of every month --> ... </service>
Delete received messages
<invoke name="add"> <!-- Delete messages at 00:00 on the 1st of every month --> <argument type="java.lang.String">0 0 1 * *</argument> <argument type="it.sauronsoftware.cron4j.Task"> <object code="com.nexacro.xpush.service.schedule.DeleteMessageTask"> <attribute name="dbcpService"> <service-ref>#DbcpService</service-ref> </attribute> </object> </argument> </invoke>
Delete expired messages
<invoke name="add"> <!-- Delete messages that expire at 00:00 every day of every month --> <argument type="java.lang.String">0 0 * * *</argument> <argument type="it.sauronsoftware.cron4j.Task"> <object code="com.nexacro.xpush.service.schedule.DeleteExpiredMessageTask"> <attribute name="dbcpService"> <service-ref>#DbcpService</service-ref> </attribute> </object> </argument> </invoke>
Delete expired notifications
<invoke name="add"> <!-- Delete notifications that expire at 00:00 on Sundays --> <argument type="java.lang.String">0 0 * * *</argument> <argument type="it.sauronsoftware.cron4j.Task"> <object code="com.nexacro.xpush.service.schedule.DeleteExpiredNotificationTask"> <attribute name="dbcpService"> <service-ref>#DbcpService</service-ref> </attribute> </object> </argument> </invoke>
HazelcastService
scale-out service
Attribute | Description |
---|---|
portAutoIncrement | Whether to activate the auto-increment function of the port number assigned to each HazelcastService. default: false |
port | The default port number to be used in HazelcastService. default: 10087 |
joinTcpipEnable | Whether to connect to other X-PUSH Nodes through TCP/IP is set. default: false |
joinTcpipMember | X-PUSH Node information to be connected ex) 127.0.0.1:10087 |
<service name="HazelcastService"> <attribute name="portAutoIncrement">false</attribute> <attribute name="port">10087</attribute> <attribute name="publicAddress">172.10.12.120</attribute> <attribute name="joinTcpipEnable">false</attribute> <attribute name="joinTcpipMember" type ="java.lang.String[]"> 127.0.0.1:10087 </attribute> <depends>Log</depends> </service>
ConnectionManagerService
Client connection management service
Attribute | Description |
---|---|
lockTimeSec | Lock time to organize information shared between Nodes when one X-PUSH Node is down (Unit: Seconds) |
HazelcastServiceName | scale-out service name |
<service name="connectionManagerService" ... > <attribute name="lockTimeSec">120</attribute> <attribute name="HazelcastServiceName">#HazelcastService</attribute> </service>
NodeManagerService
X-PUSH node management service
Attribute | Description |
---|---|
HazelcastServiceName | scale-out service name |
<service name="nodeManagerService"> <attribute name="HazelcastServiceName">#HazelcastService</attribute> <depends>HazelcastService</depends> </service>
NotificationAttributeCommonService
Mobile notification attribute setting service
Attribute | Description |
---|---|
MultiAppWithProjectID | Whether to use multiple mobile apps configured as a project |
badge | Whether to display the badge |
isBadgeOnlyStateZero | Whether to display only values with a status value of 0 for unreceived messages on the badge |
| Not used |
<service name="NotificationAttributeCommonService"> <attribute name="IsMultiAppWithProjectID">true</attribute> <attribute name="badge">true</attribute> <attribute name="IsBadgeOnlyStateZero">true</attribute> <attribute name="retries">3</attribute> </service>
NotificationBuilderService
Mobile notification generation service
Attribute | Description |
---|---|
InsertBatchAtOnceCount | Number of inserts at once in the T_Notification table |
UpdateHandlerBatchAtOnceCount | Number of mobile notification results to be updated at once in the T_Notification table |
UpdateHandlerProcessingAtOnceCount | Number of fetches at once from the update queue |
NotificationQueueServiceName | Notification queue service name |
ConnectionManagerServiceName | Client connection management service name |
DbcpServiceName | DB connection service name |
RepositoryServiceName | Storage service name |
ApnsNotifiableQueueServiceName | APNs notification queue service name |
GcmNotifiableQueueServiceName | FCM notification queue service name |
UpdateNotificationQueueServiceName | Mobile notification result update queue service name |
NotificationFormatterName | Mobile notification message conversion name |
NotificationAttributeCommonServiceName | Mobile notification attribute setting service name |
<service name="NotificationBuilderService"> <attribute name="insertBatchAtOnceCount">1000</attribute> <attribute name="UpdateHandlerBatchAtOnceCount">1000</attribute> <attribute name="UpdateHandlerProcessingAtOnceCount">1000</attribute> <attribute name="NotificationQueueServiceName"> #NotificationQueueService </attribute> <attribute name="ConnectionManagerServiceName"> #connectionManagerService </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="RepositoryServiceName">#RepositoryService</attribute> <attribute name="ApnsNotifiableQueueServiceName"> #ApnsNotifiableQueueService </attribute> <attribute name="GcmNotifiableQueueServiceName"> #GcmNotifiableQueueService </attribute> <attribute name="UpdateNotificationQueueServiceName"> #UpdateNotificationQueueService </attribute> <attribute name="NotificationFormatterName"> com.nexacro.xpush.service.notification.NotificationFormatterPropertiesImpl </attribute> <depends>NotificationQueueService</depends> <depends>connectionManagerService</depends> <depends>DbcpService</depends> <depends>RepositoryService</depends> <depends>ApnsNotifiableQueueService</depends> <depends>GcmNotifiableQueueService</depends> <depends>UpdateNotificationQueueService</depends> <attribute name="NotificationAttributeCommonServiceName"> #NotificationAttributeCommonService</attribute> <depends>NotificationAttributeCommonService</depends> </service>
ApnsInfoService
APNs certificate information service
Attribute | Description |
---|---|
ProjectID | Project name |
AppInfo | Apns certificate information BundleID = path, password, keyStoreType, production |
<service name="IOS_PRO#2"> <attribute name="ProjectID">PRO#2</attribute> <attribute name="AppInfo" type ="java.util.HashMap"> com.nexacro.apns=C:\tmp\apns.p12,password,PKCS12,false, </attribute> </service>
ApnsNotiferService
APNs notification service
Attribute | Description |
---|---|
ApnsInfo | Certificate service name |
NotificationAttributeCommonServiceName | Mobile notification attribute service name |
ApnsConnectorName | ApnsConnector class |
feedbackService | Whether to activate Apns feedback service |
sound | Notification sound |
ApnsMessageQueueServiceName | Apns queue service name |
DbcpServiceName | DB connection service name |
ApnsProviderThreadPoolCount | Apns Message Provider thread pool number |
failOver | Mobile notification failure processor |
nextQueueServiceName | Mobile notification failure processor queue service name |
UpdateNotificationQueueServiceName | Mobile notification result update queue service name |
<service name="ApnsNotifierService"> <attribute name="ApnsInfo"> #IOS_PRO#2 </attribute> <attribute name="NotificationAttributeCommonServiceName"> #NotificationAttributeCommonService </attribute> <attribute name="ApnsConnectorName"> com.nexacro.xpush.service.notification.connector.XPushApnsConnector </attribute> <attribute name="feedbackService">true</attribute> <attribute name="sound">default</attribute> <attribute name="ApnsMessageQueueServiceName"> #ApnsNotifiableQueueService </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="ApnsProviderThreadPoolCount">1</attribute> <attribute name="failOver">true</attribute> <attribute name="nextQueueServiceName">#EtcQueue</attribute> <attribute name="UpdateNotificationQueueServiceName"> #UpdateNotificationQueueService </attribute> <depends>UpdateNotificationQueueService</depends> <depends>ApnsNotifiableQueueService</depends> <depends>DbcpService</depends> <depends>NotificationAttributeCommonService</depends> </service>
FcmInfoService
APNs certificate information service
Attribute | Description |
---|---|
ProjectID | Project name |
ApiKey | FCM project ApiKey |
SenderID | FCM sender ID |
<service name="ANDROID_PRO#1"> <attribute name="ProjectID">PRO#1</attribute> <attribute name="Apikey">AIzaSyAbsdAxWAIZAXnTR12mbAhe6GUH3yyIx7A</attribute> <attribute name="SendID">678520125789</attribute> </service>
GcmNotifierService
FCM notification service
Attribute | Description |
---|---|
FcmInfo | FCM project service name |
NotificationAttributeCommonServiceName | Mobile notification attribute service name |
GcmConnectorName | FcmConnector class |
GcmMessageQueueServiceName | FCM queue service name |
DbcpServiceName | DB connection service name |
GcmProviderThreadPoolCount | FCM Message Provider thread pool number |
failOver | Mobile notification failure processor |
nextQueueServiceName | Mobile notification failure processor queue service name |
UpdateNotificationQueueServiceName | Mobile notification result update queue service name |
<service name="GcmNotifierService"> <attribute name="FcmInfo"> #ANDROID_PRO#1 </attribute> <attribute name="NotificationAttributeCommonServiceName"> #NotificationAttributeCommonService </attribute> <attribute name="GcmConnectorName"> com.nexacro.xpush.service.notification.connector.GcmHttpConnector </attribute> <attribute name="GcmMessageQueueServiceName"> #GcmNotifiableQueueService </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="GcmProviderThreadPoolCount">1</attribute> <attribute name="failOver">true</attribute> <attribute name="nextQueueServiceName">#EtcQueue</attribute> <attribute name="UpdateNotificationQueueServiceName"> #UpdateNotificationQueueService </attribute> <depends>UpdateNotificationQueueService</depends> <depends>GcmNotifiableQueueService</depends> <depends>DbcpService</depends> <depends>NotificationAttributeCommonService</depends> </service>
NotificationQueueService
Mobile notification queue service
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="NotificationQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
GcmNotifiableQueueService
FCM mobile notification queue service
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="GcmNotifiableQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
ApnsNotifiableQueueService
Apns notification queue service
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="ApnsNotifiableQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
UpdateNotificationQueueService
Mobile notification queue service
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="UpdateNotificationQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
UpdateNotificationQueueService
Mobile notification queue service
Attribute | Description |
---|---|
MaxCapacity | Maximum capacity of the queue (number) |
<service name="UpdateNotificationQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
Log
Log service
In XPUSH, logs are implemented with the jp.osssc.service.log.Logger interface.
Attribute | Description |
---|---|
MessageRecordFactoryServiceName | Message record factory service name |
DebugEnabled | Logger.debug() Whether to output the log |
SystemDebugEnabled | Whether to perform category logging of LogServiceMBean.SYSTEM_DEBUG_CATEGORY |
SystemInfoEnabled | Whether to perform category logging of LogServiceMBean.SYSTEM_INFO_CATEGORY |
SystemWarnEnabled | Whether to perform category logging of LogServiceMBean.SYSTEM_WARN_CATEGORY |
SystemErrorEnabled | Whether to perform category logging of LogServiceMBean.SYSTEM_ERROR_CATEGORY |
SystemFatalEnabled | Whether to perform category logging of LogServiceMBean.SYSTEM_FATAL_CATEGORY |
CategoryServiceNames | Category service name |
<service name="Log"> <attribute name="MessageRecordFactoryServiceName"> #MessageRecordFactory </attribute> <attribute name="DebugEnabled">true</attribute> <attribute name="SystemDebugEnabled">false</attribute> <attribute name="SystemInfoEnabled">false</attribute> <attribute name="SystemWarnEnabled">true</attribute> <attribute name="SystemErrorEnabled">true</attribute> <attribute name="SystemFatalEnabled">true</attribute> <attribute name="CategoryServiceNames"> #ConsoleLogger #FileLogger #LogDispatcher </attribute> ... </service>
MessageRecordFactory
Message record factory service
Attribute | Description |
---|---|
MessageRecordClassName | Message record class name |
AllowOverrideMessage | Whether to allow Overridden messages |
MessageDefines | Message log definition - Log level = range, category |
SecretMode | Whether to mask characters in messages containing secret characters |
<service name="MessageRecordFactory"> <attribute name="MessageRecordClassName"> jp.ossc.nimbus.service.log.LogMessageRecordImpl </attribute> <attribute name="AllowOverrideMessage">true</attribute> <attribute name="MessageDefines"> DEBUG=@0,40,File:Console:UserLogProcessor TRACE=@0,30,File:Console:UserLogProcessor INFO=@0,20,File:Console:UserLogProcessor WARN=@0,10,File:Console:UserLogProcessor ERROR=@0,0,File:Console:UserLogProcessor </attribute> <attribute name="SecretMode">true</attribute> </service>
ConsoleLogger
Log message setting service displayed on the console
Attribute | Description |
---|---|
CategoryName | Category name |
PriorityRange | Log range |
MessageWriterServiceName | Message writer service name |
WritableRecordFactoryServiceName | WritableRecordFactoryService name |
ConsoleWritableRecordFactory
Attribute | Description |
---|---|
Format | Log format |
DateFormat | Log date format |
<service name="ConsoleLogger"> <attribute name="CategoryName">Console</attribute> <attribute name="PriorityRange">0:40</attribute> <attribute name="MessageWriterServiceName">#ConsoleLogWriter</attribute> <attribute name="WritableRecordFactoryServiceName"> #ConsoleWritableRecordFactory </attribute> <depends>#ConsoleLogWriter</depends> <depends> <service name="ConsoleWritableRecordFactory"> <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute> <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute> </service> </depends> </service>
FileLogger
Log message setting service stored in the file
Attribute | Description |
---|---|
CategoryName | Category name |
PriorityRange | Log range |
MessageWriterServiceName | Message writer service name |
WritableRecordFactoryServiceName | WritableRecordFactoryService name |
FileWritableRecordFactory
Attribute | Description |
---|---|
Format | Log format |
DateFormat | Log date format |
<service name="FileLogger"> <attribute name="CategoryName">File</attribute> <attribute name="PriorityRange">0:40</attribute> <attribute name="MessageWriterServiceName">#FileLogWriter</attribute> <attribute name="WritableRecordFactoryServiceName"> #FileWritableRecordFactory </attribute> <depends>#FileLogWriter</depends> <depends> <service name="FileWritableRecordFactory"> <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute> <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute> </service> </depends> </service>
LogDispatcher
User-defined log service
Attribute | Description |
---|---|
CategoryName | Category name |
PriorityRange | Log range |
MessageWriterServiceName | Message writer service name |
WritableRecordFactoryServiceName | WritableRecordFactoryService name |
LogFactory
Attribute | Description |
---|---|
Format | Log format |
DateFormat | Log date format |
<service name="LogDispatcher"> <attribute name="CategoryName">UserLogProcessor</attribute> <attribute name="PriorityRange">0:20</attribute> <attribute name="MessageWriterServiceName">#ConsoleLogWriter</attribute> <attribute name="WritableRecordFactoryServiceName"> #LogFactory </attribute> <depends> <service name="LogFactory"> <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute> <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute> </service> </depends> </service>
FileLogWriter
Log file setting service
Attribute | Description |
---|---|
LogPath | Log location |
LogFile | Log file name |
DatePattern | Log file name date pattern ex) xpush.log.20190725 |
Encoding | Log file content encoding |
Append | Whether to append log file content |
BufferedIO | Buffered Stream IO |
<service name="FileLogWriter"> <attribute name="LogPath">log</attribute> <attribute name="LogFile">xpush.log</attribute> <attribute name="DatePattern">'.'yyyy-MM-dd</attribute> <attribute name="Encoding">utf-8</attribute> <attribute name="Append">true</attribute> <attribute name="BufferedIO">false</attribute> </service>
ConsoleLogWriter
Log console setting service
MonitorLogWriter
XPUSH monitoring status log output service
Attribute | Description |
---|---|
IsRecord | Whether to record file |
LogPath | Log location |
LogFile | Log file name |
DatePattern | Log file name date pattern ex) xpush.log.20190725 |
Encoding | Log file content encoding |
Append | Whether to append log file content |
BufferedIO | Buffered Stream IO |
RecordingPeriod | Recording cycle |
PushMonitorServiceName | PushMonitor service name |
<service name="MonitorLogWriter"> <attribute name="IsRecord">true</attribute> <attribute name="LogPath">log/status</attribute> <attribute name="LogFile">xpush.status</attribute> <attribute name="DatePattern">'.'yyyy-MM-dd</attribute> <attribute name="Encoding">utf-8</attribute> <attribute name="Append">true</attribute> <attribute name="BufferedIO">false</attribute> <attribute name="RecordingPeriod">5000</attribute> <attribute name="PushMonitorServiceName">#PushMonitor</attribute> </service>