Skip to content

Commit 4481a40

Browse files
author
Orestis Tsakiridis
committed
Merge branch 'master' of https://github.com/RestComm/RestComm-Connect into FS-56_change_rvd_context
2 parents f79a601 + cdac488 commit 4481a40

143 files changed

Lines changed: 4793 additions & 1096 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Jenkinsfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ def buildRC() {
99
try {
1010
if (env.BRANCH_NAME == 'master') {
1111
//do sonar just in master
12-
sh "mvn -f restcomm/pom.xml -pl \\!restcomm.testsuite -Dmaven.test.redirectTestOutputToFile=true -Dsonar.host.url=https://sonarqube.com -Dsonar.login=dd43f79a4bd32b1f2c484362e8a4de676a8388c4 -Dsonar.organization=jaimecasero-github -Dsonar.branch=master install sonar:sonar"
12+
sh "mvn -f restcomm/pom.xml -pl \\!restcomm.testsuite -Dmaven.test.redirectTestOutputToFile=true -Dsonar.host.url=https://sonarqube.com -Dsonar.login=dd43f79a4bd32b1f2c484362e8a4de676a8388c4 -Dsonar.organization=jaimecasero-github -Dsonar.branch=master clean install sonar:sonar"
1313
} else {
14-
sh "mvn -f restcomm/pom.xml -pl \\!restcomm.testsuite -Dmaven.test.redirectTestOutputToFile=true install"
14+
sh "mvn -f restcomm/pom.xml -pl \\!restcomm.testsuite -Dmaven.test.redirectTestOutputToFile=true clean install"
1515
}
1616
} catch(err) {
1717
publishRCResults()

restcomm/configuration/config-scripts/as7-config-scripts/restcomm/advanced.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ HTTP_RESPONSE_TIMEOUT=6000
149149

150150
# If set to true RestComm will NOT use cache for *.wav files playback.If set to false RestComm will use cache for *.wav files playback.
151151
CACHE_NO_WAV=false
152+
#Path in FS to where the cache will be hosted.
153+
CACHE_PATH=${restcomm:home}/cache
152154

153155
#MSS Configuration
154156
TLS_CLIENT_AUTH_TYPE="Disabled" #Possible values Enabled, Want, Disabled,DisabledAll

restcomm/configuration/config-scripts/as7-config-scripts/restcomm/autoconfig.d/config-restcomm.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,11 +607,14 @@ configRestCommURIs() {
607607
REMOTE_ADDRESS="${SCHEME}://${PUBLIC_IP}:${PORT}"
608608

609609
sed -i "s|<prompts-uri>.*</prompts-uri>|<prompts-uri>$REMOTE_ADDRESS/restcomm/audio<\/prompts-uri>|" $FILE
610-
sed -i "s|<cache-uri>.*/cache-uri>|<cache-uri>$REMOTE_ADDRESS/restcomm/cache</cache-uri>|" $FILE
610+
sed -i "s|<cache-uri>.*</cache-uri>|<cache-uri>$REMOTE_ADDRESS/restcomm/cache</cache-uri>|" $FILE
611+
sed -i "s|<cache-path>.*</cache-path>|<cache-path>$CACHE_PATH</cache-path>|" $FILE
611612
sed -i "s|<error-dictionary-uri>.*</error-dictionary-uri>|<error-dictionary-uri>$REMOTE_ADDRESS/restcomm/errors</error-dictionary-uri>|" $FILE
612613

614+
#Equivalent changes in case XML tags are empty after empty values
613615
sed -i "s|<prompts-uri/>|<prompts-uri>$REMOTE_ADDRESS/restcomm/audio<\/prompts-uri>|" $FILE
614616
sed -i "s|<cache-uri/>|<cache-uri>$REMOTE_ADDRESS/restcomm/cache</cache-uri>|" $FILE
617+
sed -i "s|<cache-path/>|<cache-path>$CACHE_PATH</cache-path>|" $FILE
615618
sed -i "s|<error-dictionary-uri/>|<error-dictionary-uri>$REMOTE_ADDRESS/restcomm/errors</error-dictionary-uri>|" $FILE
616619

617620
echo "Updated prompts-uri cache-uri error-dictionary-uri External MSaddress for "

restcomm/restcomm.application/src/main/java/org/restcomm/connect/application/Bootstrapper.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.mobicents.servlet.sip.SipConnector;
3131
import org.restcomm.connect.application.config.ConfigurationStringLookup;
3232
import org.restcomm.connect.commons.Version;
33+
import org.restcomm.connect.commons.amazonS3.S3AccessTool;
3334
import org.restcomm.connect.commons.common.http.CustomHttpClientBuilder;
3435
import org.restcomm.connect.commons.configuration.RestcommConfiguration;
3536
import org.restcomm.connect.commons.dao.Sid;
@@ -232,10 +233,10 @@ private String home(final ServletContext context) {
232233
}
233234
}
234235

235-
private DaoManager storage(final Configuration configuration, Configuration daoManagerConfiguration, final ClassLoader loader, final ExecutionContext ec) throws ObjectInstantiationException {
236+
private DaoManager storage(final Configuration configuration, Configuration daoManagerConfiguration, S3AccessTool s3AccessTool, final ClassLoader loader, final ExecutionContext ec) throws ObjectInstantiationException {
236237
final String classpath = daoManagerConfiguration.getString("dao-manager[@class]");
237238
final DaoManager daoManager = (DaoManager) new ObjectFactory(loader).getObjectInstance(classpath);
238-
daoManager.configure(configuration, daoManagerConfiguration, ec);
239+
daoManager.configure(configuration, daoManagerConfiguration, s3AccessTool, ec);
239240
daoManager.start();
240241
return daoManager;
241242
}
@@ -335,6 +336,27 @@ private void generateDefaultProfile(final DaoManager storage, final String profi
335336
}
336337
}
337338

339+
private S3AccessTool prepareS3AccessTool(Configuration configuration) {
340+
Configuration amazonS3Configuration = configuration.subset("amazon-s3");
341+
if (!amazonS3Configuration.isEmpty()) { // Do not fail with NPE is amazonS3Configuration is not present for older install
342+
boolean amazonS3Enabled = amazonS3Configuration.getBoolean("enabled");
343+
if (amazonS3Enabled) {
344+
final String accessKey = amazonS3Configuration.getString("access-key");
345+
final String securityKey = amazonS3Configuration.getString("security-key");
346+
final String bucketName = amazonS3Configuration.getString("bucket-name");
347+
final String folder = amazonS3Configuration.getString("folder");
348+
final boolean reducedRedundancy = amazonS3Configuration.getBoolean("reduced-redundancy");
349+
final int minutesToRetainPublicUrl = amazonS3Configuration.getInt("minutes-to-retain-public-url", 10);
350+
final boolean removeOriginalFile = amazonS3Configuration.getBoolean("remove-original-file");
351+
final String bucketRegion = amazonS3Configuration.getString("bucket-region");
352+
final boolean testing = amazonS3Configuration.getBoolean("testing", false);
353+
final String testingUrl = amazonS3Configuration.getString("testing-url", null);
354+
return new S3AccessTool(accessKey, securityKey, bucketName, folder, reducedRedundancy, minutesToRetainPublicUrl, removeOriginalFile, bucketRegion, testing, testingUrl);
355+
}
356+
}
357+
return null;
358+
}
359+
338360
@Override
339361
public void servletInitialized(SipServletContextEvent event) {
340362
if (event.getSipServlet().getClass().equals(Bootstrapper.class)) {
@@ -387,10 +409,14 @@ public void servletInitialized(SipServletContextEvent event) {
387409
// Share the actor system with other servlets.
388410
context.setAttribute(ActorSystem.class.getName(), system);
389411
ec = system.dispatchers().lookup("restcomm-blocking-dispatcher");
412+
413+
S3AccessTool s3AccessTool = prepareS3AccessTool(xml);
414+
context.setAttribute(S3AccessTool.class.getName(), s3AccessTool);
415+
390416
// Create the storage system.
391417
DaoManager storage = null;
392418
try {
393-
storage = storage(xml, daoManagerConf, loader, ec);
419+
storage = storage(xml, daoManagerConf, s3AccessTool, loader, ec);
394420
} catch (final ObjectInstantiationException exception) {
395421
logger.error("ObjectInstantiationException during initialization: ", exception);
396422
}

restcomm/restcomm.application/src/main/java/org/restcomm/connect/application/RestcommConnectServiceProvider.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@
2222

2323
import javax.servlet.ServletContext;
2424

25+
import org.restcomm.connect.commons.amazonS3.S3AccessTool;
2526
import org.restcomm.connect.core.service.api.ClientPasswordHashingService;
2627
import org.restcomm.connect.core.service.api.NumberSelectorService;
2728
import org.restcomm.connect.core.service.api.ProfileService;
29+
import org.restcomm.connect.core.service.api.RecordingService;
2830
import org.restcomm.connect.core.service.client.ClientPasswordHashingServiceImpl;
2931
import org.restcomm.connect.core.service.number.NumberSelectorServiceImpl;
3032
import org.restcomm.connect.core.service.profile.ProfileServiceImpl;
33+
import org.restcomm.connect.core.service.recording.RecordingsServiceImpl;
3134
import org.restcomm.connect.dao.DaoManager;
3235

3336
/**
@@ -41,6 +44,7 @@ public class RestcommConnectServiceProvider {
4144
private NumberSelectorService numberSelector;
4245
private ProfileService profileService;
4346
private ClientPasswordHashingService clientPasswordHashingService;
47+
private RecordingService recordingService;
4448

4549
public static RestcommConnectServiceProvider getInstance() {
4650
if (instance == null) {
@@ -61,6 +65,11 @@ public void startServices(ServletContext ctx) {
6165
ctx.setAttribute(ProfileService.class.getName(), profileService);
6266
this.clientPasswordHashingService = new ClientPasswordHashingServiceImpl(daoManager);
6367
ctx.setAttribute(ClientPasswordHashingService.class.getName(), clientPasswordHashingService);
68+
69+
S3AccessTool s3AccessTool = (S3AccessTool) ctx.getAttribute(S3AccessTool.class.getName());
70+
71+
this.recordingService = new RecordingsServiceImpl(daoManager.getRecordingsDao(), s3AccessTool);
72+
ctx.setAttribute(RecordingService.class.getName(), recordingService);
6473
}
6574

6675
/**
@@ -77,6 +86,14 @@ public ProfileService provideProfileService() {
7786
return profileService;
7887
}
7988

89+
/**
90+
* @return
91+
*/
8092
public ClientPasswordHashingService clientPasswordHashingService() { return clientPasswordHashingService; }
8193

94+
/**
95+
* @return
96+
*/
97+
public RecordingService recordingService() { return recordingService; }
98+
8299
}

restcomm/restcomm.application/src/main/webapp/WEB-INF/data/hsql/restcomm.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ CREATE MEMORY TABLE "restcomm_conference_detail_records" ( "sid" VARCHAR(34) NOT
1313
CREATE MEMORY TABLE "restcomm_clients"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"account_sid" VARCHAR(34) NOT NULL,"api_version" VARCHAR(10) NOT NULL,"friendly_name" VARCHAR(64) NOT NULL,"login" VARCHAR(64) NOT NULL,"password" VARCHAR(64) NOT NULL,"status" INTEGER NOT NULL,"voice_url" LONGVARCHAR,"voice_method" VARCHAR(4),"voice_fallback_url" LONGVARCHAR,"voice_fallback_method" VARCHAR(4),"voice_application_sid" VARCHAR(34),"uri" LONGVARCHAR NOT NULL, "push_client_identity" VARCHAR(34), "password_algorithm" VARCHAR(34))
1414
CREATE MEMORY TABLE "restcomm_registrations"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"date_expires" DATETIME NOT NULL,"address_of_record" LONGVARCHAR NOT NULL,"display_name" VARCHAR(255),"user_name" VARCHAR(64) NOT NULL,"user_agent" LONGVARCHAR,"ttl" INTEGER NOT NULL,"location" LONGVARCHAR NOT NULL, "webrtc" BOOLEAN DEFAULT FALSE, "instanceid" VARCHAR(255), "isLBPresent" BOOLEAN DEFAULT FALSE, "organization_sid" VARCHAR(34))
1515
CREATE MEMORY TABLE "restcomm_short_codes"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"friendly_name" VARCHAR(64) NOT NULL,"account_sid" VARCHAR(34) NOT NULL,"short_code" INTEGER NOT NULL,"api_version" VARCHAR(10) NOT NULL,"sms_url" LONGVARCHAR,"sms_method" VARCHAR(4),"sms_fallback_url" LONGVARCHAR,"sms_fallback_method" VARCHAR(4),"uri" LONGVARCHAR NOT NULL)
16-
CREATE MEMORY TABLE "restcomm_sms_messages"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"date_sent" DATETIME,"account_sid" VARCHAR(34) NOT NULL,"sender" VARCHAR(255) NOT NULL,"recipient" VARCHAR(64) NOT NULL,"body" VARCHAR(999) NOT NULL,"status" VARCHAR(20) NOT NULL,"direction" VARCHAR(14) NOT NULL,"price" VARCHAR(8) NOT NULL,"api_version" VARCHAR(10) NOT NULL,"uri" LONGVARCHAR NOT NULL, "smpp_message_id" VARCHAR(1000))
16+
CREATE MEMORY TABLE "restcomm_sms_messages"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"date_sent" DATETIME,"account_sid" VARCHAR(34) NOT NULL,"sender" VARCHAR(255) NOT NULL,"recipient" VARCHAR(64) NOT NULL,"body" VARCHAR(999) NOT NULL,"status" VARCHAR(20) NOT NULL,"direction" VARCHAR(14) NOT NULL,"price" VARCHAR(8) NOT NULL,"api_version" VARCHAR(10) NOT NULL,"uri" LONGVARCHAR NOT NULL, "smpp_message_id" VARCHAR(1000), "error_code" INT, "status_callback" LONGVARCHAR, "status_callback_method" LONGVARCHAR)
1717
CREATE MEMORY TABLE "restcomm_recordings"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"account_sid" VARCHAR(34) NOT NULL,"call_sid" VARCHAR(1000) NOT NULL,"duration" DOUBLE NOT NULL,"api_version" VARCHAR(10) NOT NULL,"uri" LONGVARCHAR NOT NULL, "file_uri" LONGVARCHAR, "s3_uri" LONGVARCHAR)
1818
CREATE MEMORY TABLE "restcomm_transcriptions"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"account_sid" VARCHAR(34) NOT NULL,"status" VARCHAR(11) NOT NULL,"recording_sid" VARCHAR(34) NOT NULL,"duration" DOUBLE NOT NULL,"transcription_text" LONGVARCHAR,"price" VARCHAR(8) NOT NULL,"uri" LONGVARCHAR NOT NULL)
1919
CREATE MEMORY TABLE "restcomm_notifications"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"account_sid" VARCHAR(34) NOT NULL,"call_sid" VARCHAR(1000),"api_version" VARCHAR(10) NOT NULL,"log" TINYINT NOT NULL,"error_code" SMALLINT NOT NULL,"more_info" LONGVARCHAR NOT NULL,"message_text" LONGVARCHAR NOT NULL,"message_date" DATETIME NOT NULL,"request_url" LONGVARCHAR NOT NULL,"request_method" VARCHAR(4) NOT NULL,"request_variables" LONGVARCHAR NOT NULL,"response_headers" LONGVARCHAR,"response_body" LONGVARCHAR,"uri" LONGVARCHAR NOT NULL)

restcomm/restcomm.application/src/main/webapp/WEB-INF/scripts/mariadb/init.sql

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,10 @@ direction VARCHAR(14) NOT NULL,
249249
price VARCHAR(8) NOT NULL,
250250
api_version VARCHAR(10) NOT NULL,
251251
uri MEDIUMTEXT NOT NULL,
252-
smpp_message_id MEDIUMTEXT
252+
smpp_message_id MEDIUMTEXT,
253+
status_callback MEDIUMTEXT,
254+
status_callback_method MEDIUMTEXT,
255+
error_code BIGINT
253256
);
254257

255258
CREATE TABLE restcomm_recordings (
@@ -466,6 +469,9 @@ CREATE INDEX idx_cdr_conference_sid ON restcomm_call_detail_records (conference_
466469
/* Create index on restcomm_call_detail_records on conference_sid column */
467470
CREATE INDEX idx_cdr_conference_status ON restcomm_conference_detail_records (status);
468471

472+
/* Create index on restcomm_sms_messages on smpp_message_id column */
473+
CREATE INDEX idx_restcomm_sms_messages_smpp_message_id ON restcomm_sms_messages (smpp_message_id);
474+
469475
DELIMITER //
470476
DROP PROCEDURE IF EXISTS addConferenceDetailRecord;
471477
CREATE PROCEDURE addConferenceDetailRecord( IN in_sid VARCHAR(34),

restcomm/restcomm.application/src/main/webapp/WEB-INF/scripts/mariadb/sql/sms-messages.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
<mapper namespace="org.mobicents.servlet.sip.restcomm.dao.SmsMessagesDao">
77
<insert id="addSmsMessage" parameterType="map">
88
INSERT INTO restcomm_sms_messages (sid, date_created, date_updated, date_sent, account_sid, sender, recipient, body, status, direction,
9-
price, api_version, uri) VALUES (#{sid}, #{date_created}, #{date_updated}, #{date_sent}, #{account_sid}, #{sender}, #{recipient}, #{body},
10-
#{status}, #{direction}, #{price}, #{api_version}, #{uri});
9+
price, api_version, uri, status_callback, status_callback_method) VALUES (#{sid}, #{date_created}, #{date_updated}, #{date_sent}, #{account_sid}, #{sender}, #{recipient}, #{body},
10+
#{status}, #{direction}, #{price}, #{api_version}, #{uri}, #{status_callback)},
11+
#{status_callback_method)});
1112
</insert>
1213

1314
<select id="getSmsMessage" parameterType="string" resultType="hashmap">
@@ -31,7 +32,7 @@
3132
</delete>
3233

3334
<update id="updateSmsMessage" parameterType="map">
34-
UPDATE restcomm_sms_messages SET date_sent=#{date_sent}, status=#{status}, price=#{price}, smpp_message_id=#{smpp_message_id}, date_updated=NOW() WHERE sid=#{sid};
35+
UPDATE restcomm_sms_messages SET date_sent=#{date_sent}, status=#{status}, price=#{price}, smpp_message_id=#{smpp_message_id}, error_code=#{error_code}, date_updated=NOW() WHERE sid=#{sid};
3536
</update>
3637

3738
<select id="getSmsMessagesPerAccountLastPerMinute" parameterType="map" resultType="int">
@@ -117,9 +118,14 @@
117118
AND date_created &gt;= #{startTime}
118119
</if>
119120
<if test="endTime != null">
120-
AND date_created &lt;= DATE_ADD(#{endTime},INTERVAL 1 DAY)
121+
AND date_created &lt;= DATE_ADD(#{endTime},INTERVAL 1 DAY)
121122
</if>
122123
order by date_created
123124
LIMIT #{limit} OFFSET #{offset}
124125
</select>
126+
127+
<select id="findBySmppMessageId" parameterType="map" resultType="hashmap">
128+
SELECT * FROM restcomm_sms_messages AS restcomm_sms_messages
129+
WHERE smpp_message_id = #{smppMessageId}
130+
</select>
125131
</mapper>

restcomm/restcomm.application/src/main/webapp/WEB-INF/sql/sms-messages.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
<mapper namespace="org.mobicents.servlet.sip.restcomm.dao.SmsMessagesDao">
77
<insert id="addSmsMessage" parameterType="map">
88
INSERT INTO "restcomm_sms_messages" ("sid", "date_created", "date_updated", "date_sent", "account_sid", "sender", "recipient", "body", "status", "direction", "price",
9-
"api_version", "uri") VALUES (#{sid}, #{date_created}, #{date_updated}, #{date_sent}, #{account_sid}, #{sender}, #{recipient}, #{body},
10-
#{status}, #{direction}, #{price}, #{api_version}, #{uri});
9+
"api_version", "uri", "status_callback", "status_callback_method") VALUES (#{sid}, #{date_created}, #{date_updated}, #{date_sent}, #{account_sid}, #{sender}, #{recipient}, #{body},
10+
#{status}, #{direction}, #{price}, #{api_version}, #{uri}, #{status_callback},
11+
#{status_callback_method});
1112
</insert>
1213

1314
<select id="getSmsMessage" parameterType="string" resultType="hashmap">
@@ -31,7 +32,7 @@
3132
</delete>
3233

3334
<update id="updateSmsMessage" parameterType="map">
34-
UPDATE "restcomm_sms_messages" SET "date_sent"=#{date_sent}, "status"=#{status}, "price"=#{price}, "smpp_message_id"=#{smpp_message_id}, "date_updated"=NOW() WHERE "sid"=#{sid};
35+
UPDATE "restcomm_sms_messages" SET "date_sent"=#{date_sent}, "status"=#{status}, "price"=#{price}, "smpp_message_id"=#{smpp_message_id}, "error_code"=#{error_code}, "date_updated"=NOW() WHERE "sid"=#{sid};
3536
</update>
3637

3738
<select id="getSmsMessagesPerAccountLastPerMinute" parameterType="map" resultType="int">
@@ -117,10 +118,15 @@
117118
AND "date_created" &gt;= #{startTime}
118119
</if>
119120
<if test="endTime != null">
120-
AND "date_created" &lt;= DATE_ADD(#{endTime},INTERVAL 1 DAY)
121+
AND "date_created" &lt;= DATE_ADD(#{endTime},INTERVAL 1 DAY)
121122
</if>
122123
order by "date_created"
123124
LIMIT #{limit} OFFSET #{offset}
124125
</select>
126+
127+
<select id="findBySmppMessageId" parameterType="map" resultType="hashmap">
128+
SELECT * FROM "restcomm_sms_messages" AS "restcomm_sms_messages"
129+
WHERE "smpp_message_id" = #{smppMessageId}
130+
</select>
125131

126132
</mapper>

restcomm/restcomm.application/src/main/webapp/WEB-INF/web.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
<param-value>true</param-value>
2828
</init-param>
2929
</servlet>
30+
31+
<servlet>
32+
<servlet-name>RestcommFileCache</servlet-name>
33+
<servlet-class>org.restcomm.connect.http.filters.FileCacheServlet</servlet-class>
34+
</servlet>
3035

3136
<context-param>
3237
<param-name>resteasy.scan</param-name>
@@ -47,6 +52,12 @@
4752
<servlet-name>Jersey</servlet-name>
4853
<url-pattern>/2012-04-24/*</url-pattern>
4954
</servlet-mapping>
55+
56+
<servlet-mapping>
57+
<servlet-name>RestcommFileCache</servlet-name>
58+
<url-pattern>/cache/*</url-pattern>
59+
</servlet-mapping>
60+
5061

5162
<welcome-file-list>
5263
<welcome-file>index.html</welcome-file>

0 commit comments

Comments
 (0)