-
Notifications
You must be signed in to change notification settings - Fork 8
/
service.deploymentadmin.html
8640 lines (8461 loc) · 932 KB
/
service.deploymentadmin.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>114 Deployment Admin Specification - OSGi Compendium 7</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
<link rel="home" href="toc.html" title="OSGi Compendium" />
<link rel="up" href="toc.html" title="OSGi Compendium" />
<link rel="prev" href="service.event.html" title="113 Event Admin Service Specification" />
<link rel="next" href="service.autoconf.html" title="115 Auto Configuration Specification" />
<meta name="Section-title" content="114 Deployment Admin Specification" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="shortcut icon" href="images/favicon.png" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="css/custom.css" />
<link rel="stylesheet" type="text/css" href="css/github.css" />
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Ubuntu:regular,bold&subset=Latin" /><script type="text/javascript" src="js/highlight.pack.js"></script><script type="text/javascript" src="js/main.js"></script></head>
<body>
<div id="fullbody">
<div id="header">
<div class="menu-top-container"></div>
<div id="shadow-block"><a class="logo" href="index.html"><img src="images/logo.svg" alt="OSGi Alliance Documentation" /><h1>OSGi Compendium Release 7</h1></a></div>
</div>
<div id="mobile-menu-icon">⋮</div>
<div id="column-two">
<div id="content">
<div id="scrollable">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<td width="20%" align="left"><a accesskey="p" href="service.event.html">Prev</a>
</td>
<th width="60%" align="center"> </th>
<td width="20%" align="right"> <a accesskey="n" href="service.autoconf.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="chapter">
<div xmlns="" class="titlepage">
<div>
<div>
<h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="service.deploymentadmin"></a><span xmlns="" class="number">114</span> Deployment Admin Specification
</h1>
</div>
<div>
<p xmlns="http://www.w3.org/1999/xhtml" class="releaseinfo"><a xmlns="" class="xref" href="service.deploymentadmin.html#org.osgi.service.deploymentadmin" title="114.14 org.osgi.service.deploymentadmin">Version 1.1</a></p>
</div>
</div>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a xmlns="" class="anchor" id="d0e49490"></a><span xmlns="" class="number">114.1</span> Introduction
</h2>
</div>
</div>
</div>
<p>The ability to install new software components after the time of
manufacture is of increasing interest to manufacturers, operators, and end
users. End users already are, or soon will be, accustomed to installing
applications or services on their devices from remote servers.
</p>
<p>The OSGi Framework provides mechanisms to manage the lifecycle of
bundles, configuration objects, and permission objects, but the overall
consistency of the runtime configuration is the responsibility of the
<span class="emphasis"><em>management agent</em></span>. In other words, the management
agent decides to install, update, or uninstall bundles, create or delete
configuration or permission objects, and manage other resource
types.
</p>
<p>The task of the management agent is extensive because it must track
the sometimes fine-grained dependencies and constraints between the
different resource types. This model, though extremely flexible, leaves
many details up to the implementation significantly hindering the
interoperability of devices because it does not unify the management
aspects from the management systems point of view. This specification,
therefore, introduces the <span class="emphasis"><em>Deployment Admin service</em></span>
that standardizes the access to some of the responsibilities of the
management agent: that is, the life-cycle management of interlinked
resources on an OSGi Framework. The role of the Deployment Admin service
is depicted in <a xmlns="" class="xref" href="service.deploymentadmin.html#i1373114" title="Figure 114.1 Deployment Admin role">Figure <span class="number">114</span>.1</a>.
</p>
<div class="figure"><a xmlns="" class="anchor" id="i1373114"></a><p class="title"><strong>Figure <span xmlns="" class="number">114</span>.1 Deployment Admin role</strong></p>
<div class="figure-contents">
<div class="mediaobject" align="center"><img src="images/114-deploymentadmin-role.png" align="middle" width="445" height="159" alt="Deployment Admin role" /></div>
</div>
</div><br class="figure-break" /><div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e49513"></a><span xmlns="" class="number">114.1.1</span> Essentials
</h3>
</div>
</div>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p><span class="emphasis"><em>Installing/Uninstalling</em></span> - Provide a
Deployment Package concept to install and uninstall bundles and
related resources on an OSGi Framework as an atomic unit.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Tamper Detection</em></span> - Provide detection of
changes to a Deployment Package.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Securing</em></span> - Provide a security model that
allows Operators to control the Deployment Packages that are
installed on an OSGi Framework.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Media Independence</em></span> - Deployment Packages
must have the capacity to load from different media such as CD-ROM,
over the air, wireless, etc.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Management</em></span> - Management of a repository
of Deployment Packages must be possible locally on the device as
well as remotely.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Customizing</em></span> - The author of a Deployment
Package must be permitted to customize the environment during the
installation and uninstallation operations.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Extending</em></span> - The resource types that are
used in a Deployment Package must be easy to extend.
</p>
</li>
</ul>
</div>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e49552"></a><span xmlns="" class="number">114.1.2</span> Entities
</h3>
</div>
</div>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p><span class="emphasis"><em>Resource</em></span> - A file in a Deployment Package
that is processed to create artifacts in the Framework. For example,
bundles, configurations, and permissions are different
resources.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Deployment Admin Service</em></span> - The service
that is used to install and uninstall Deployment Packages, as well
as to provide information about the repository of Deployment
Packages.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Resource Processor</em></span> - A service that can
handle the lifecycle of a specific resource type. It processes a
resource to create a number of artifacts that are removed when the
resource is dropped.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Deployment Package</em></span> - A group of resources
that must be treated as a unit. Unbreakable dependencies exist among
these resources.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Artifact</em></span> - A construct that is created
from a Resource in a Deployment Package. A resource can have zero or
more artifacts related to it. Artifacts do not have a common
interface because their nature differs and their existence is
abstracted by the Resource Processor services. Artifacts must be
removed when their related resources are dropped. An example of an
artifact is a Configuration object that is created from an
configuration file in a Deployment Package.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Customizer</em></span> - A bundle carried in a
Deployment Package that can perform initialization during an install
operation and cleanup during an uninstall operation.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Fix Package</em></span> - A Deployment Package that
is an update to an resident Deployment Package, which does not carry
some resources because they are unchanged.
</p>
</li>
</ul>
</div>
<div class="figure"><a xmlns="" class="anchor" id="d0e49591"></a><p class="title"><strong>Figure <span xmlns="" class="number">114</span>.2 Deployment Admin Service, org.osgi.service.deploymentadmin
package</strong></p>
<div class="figure-contents">
<div class="mediaobject" align="center"><img src="images/114-deploymentadmin-classes.png" align="middle" width="630" height="222" alt="Deployment Admin Service, org.osgi.service.deploymentadmin package" /></div>
</div>
</div><br class="figure-break" /></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e49597"></a><span xmlns="" class="number">114.1.3</span> Synopsis
</h3>
</div>
</div>
</div>
<p>A developer can package a number of resources in a Deployment
Package. A Deployment Package is stored in a JAR file, with a format
that is similar to bundles. A Deployment Package JAR can be installed
via the Deployment Admin service via an input stream. The Deployment
Admin service manages the bundle resources itself, but processes every
other resource in the Deployment Package by handing them off to a
Resource Processor service that is designated for that resource. The
Resource Processor service will then process the resource to create a
number of artifacts.
</p>
<p>The uninstallation and update of a Deployment Package works in a
similar manner. All Resource Processor services are notified about any
resources that are dropped or changed.
</p>
<p>If all resources have been processed, the changes are committed.
If an operation on the Deployment Admin service fails, all changes are
rolled back. The Deployment Admin service is not, however, guaranteed to
support all features of transactions.
</p>
</div>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a xmlns="" class="anchor" id="i1604402"></a><span xmlns="" class="number">114.2</span> Deployment Package
</h2>
</div>
</div>
</div>
<p>A Deployment Package is a set of related
<span class="emphasis"><em>resources</em></span> that need to be managed as a
<span class="emphasis"><em>unit</em></span> rather than individual pieces. For example, a
Deployment Package can contain both a bundle and its configuration data.
The resources of a Deployment Package are tightly coupled to the
Deployment Package and cannot be shared with other Deployment
Packages.
</p>
<p>A Deployment Package is not a script that brings the system from one
consistent state to another; several deployment packages may be needed to
achieve a new consistent state. Like a bundle, a Deployment Package does
not have to be self-contained. Its bundle resources can have dependencies
on Java packages and services provided by other Deployment
Packages.
</p>
<p>For example, a suite of games shares some parts that are common to
both games. The suite contains two games: Chess
(<code class="code">com.acme.chess</code>) and Backgammon
(<code class="code">com.acme.backg</code>). Both share a top-score database as well as
a 3D graphic library.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p><code class="code">com.third.3d</code> - The 3D graphic library comes from a
third-party provider. It is a Deployment Package of its own, composed
of several bundles and possible configuration objects.
</p>
</li>
<li class="listitem">
<p><code class="code">com.acme.score</code> - The top-score database would also
be its own Deployment Package, and would in fact be optional. It
offers a service for storing top scores, but games can function
without this service.
</p>
</li>
</ul>
</div>
<p>Each game is a Deployment Package, allowing them to be installed
independently. Alternatively, the two games can be packaged into the same
Deployment Package, but in this case they must be installed and removed
together and can no longer be deployed independently.
</p>
<p>These two different packaging strategies cannot be used
simultaneously. Once the games are deployed separately, they can no longer
be grouped later in an update, because that action would move ownership of
the bundle resource to another Deployment Package which is specifically
not allowed. A bundle resource can belong to only one Deployment
Package.
</p>
<p>These two packaging scenarios are depicted in <a xmlns="" class="xref" href="service.deploymentadmin.html#i1377011" title="Figure 114.3 Packaged game">Figure <span class="number">114</span>.3</a>.
</p>
<div class="figure"><a xmlns="" class="anchor" id="i1377011"></a><p class="title"><strong>Figure <span xmlns="" class="number">114</span>.3 Packaged game</strong></p>
<div class="figure-contents">
<div class="mediaobject" align="center"><img src="images/114-packaged-game.png" align="middle" width="442" height="153" alt="Packaged game" /></div>
</div>
</div><br class="figure-break" /><p>Deployment Packages are managed as <span class="emphasis"><em>first-class
citizens</em></span> during runtime, similar to bundles. The
<code class="code">DeploymentPackage</code> object represents this concept in
runtime.
</p>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e49660"></a><span xmlns="" class="number">114.2.1</span> Resources
</h3>
</div>
</div>
</div>
<p>A Deployment Package consists of installable
<span class="emphasis"><em>resources</em></span>. Resources are described in the
<span class="emphasis"><em>Name sections</em></span> of the Manifest. They are stored in
the JAR file under a path. This path is called the <span class="emphasis"><em>resource
id</em></span>.
</p>
<p>Subsets of these resources are the bundles. Bundles are treated
differently from the other resources by the Deployment Admin service.
Non-bundle resources are called <span class="emphasis"><em>processed
resources</em></span>.
</p>
<p>Bundles are managed by the Deployment Admin service directly. When
installing a new bundle, the Deployment Admin service must set the
bundle location to the following URL:
</p><pre xmlns="" class="programlisting"><code>location ::= 'osgi-dp:' bsn
bsn ::= unique-name // See General Syntax Definitions in Core</code></pre><p>The <code class="code">bsn</code> stands for the bundle's Bundle Symbolic Name,
without any parameters, which implies that only a single version of a
bundle can be installed at any moment in time. The <code class="code">osgi-dp:</code>
scheme is not required to have a valid URL handler.
</p>
<p>Processed resources are not managed directly by the Deployment
Admin service; their management must be handed off to a Resource
Processor service that is selected in the Name section. The logical
structure and processing of resources is depicted in <a xmlns="" class="xref" href="service.deploymentadmin.html#i1599199" title="Figure 114.4 Structure of a Deployment Package">Figure <span class="number">114</span>.4</a>.
</p>
<div class="figure"><a xmlns="" class="anchor" id="i1599199"></a><p class="title"><strong>Figure <span xmlns="" class="number">114</span>.4 Structure of a Deployment Package</strong></p>
<div class="figure-contents">
<div class="mediaobject" align="center"><img src="images/114-structure-deployment-package.png" align="middle" width="447" height="214" alt="Structure of a Deployment Package" /></div>
</div>
</div><br class="figure-break" /></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e49701"></a><span xmlns="" class="number">114.2.2</span> Atomicity and Sharing
</h3>
</div>
</div>
</div>
<p>A Deployment Package is a reified concept, like a bundle, in an
OSGi Framework. It is created and managed by the Deployment Admin
service. As a unit, a Deployment Package should be installed or
uninstalled atomically.
</p>
<p>Deployment packages provide an ownership model for resources
installed in an OSGi Framework. A Deployment Package contains resources,
which once processed, will result in the creation of a number of
artifacts in the OSGi Platform such as:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p>Installed bundles</p>
</li>
<li class="listitem">
<p>Configuration objects</p>
</li>
<li class="listitem">
<p>System properties</p>
</li>
<li class="listitem">
<p>Certificates</p>
</li>
<li class="listitem">
<p>Wiring schemes</p>
</li>
</ul>
</div>
<p>A Deployment Package will <span class="emphasis"><em>own</em></span> its resources.
If a Deployment Package is uninstalled, all its resources, and thus its
artifacts, must be removed as well. The ownership model follows a
<span class="emphasis"><em>no-sharing</em></span> principle: equal resources are not
shared between deployment packages.
</p>
<p>The meaning of "equal" is dependent on the resource type. For
example, two bundles are considered equal if their bundle symbolic name
is equal, regardless of the version.
</p>
<p>A sharing violation must be considered an error. The install or
update of the offending Deployment Package must fail if a resource would
be affected by another Deployment Package. The verification of this rule
is delegated to the Resource Processor services, or the Deployment Admin
service in case of bundles.
</p>
<p>For example, a Deployment Package could be used to install bundles
and configuration objects for Managed Services (singleton
configurations). Because of the no-sharing principle, an installed
bundle must belong to one, and only one, Deployment Package (as defined
by its Bundle Symbolic Name). A singleton configuration can be set only
when the associated bundle is in the same Deployment Package. Trying to
install a Deployment Package when one of the bundles or one of the
configuration objects is already present and associated with another
Deployment Package is an error, and the install must fail in such a
case.
</p>
<p>This strong no-sharing rule ensures a clean and robust lifecycle.
It allows the simple cleanup rule: the Deployment Package that installs
a resource is the one that must uninstall it.
</p>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1601053"></a><span xmlns="" class="number">114.2.3</span> Naming
</h3>
</div>
</div>
</div>
<p>Every Deployment Package must have a name and a version. Package
authors should use unique reverse domain naming, like the naming used
for Java packages. The version syntax must follow the rules defined in
<span class="emphasis"><em>Version</em></span> in <a xmlns="" class="xref" href="introduction.html#intro.core.release" title="1.2.1 OSGi Core Release 7">OSGi Core Release 7</a>; the version must be specified.
</p>
<p>The name is set with a Manifest header. This name is used to
detect whether an install is an update (an Deployment Package has the
given name) or an install (no such Deployment Package exists). The name
must be compared in a case-sensitive manner.
</p>
<p>Together, the name and version specify a unique Deployment
Package; a device will consider any Deployment Package with the same
name and version pairs to be identical. Installing a Deployment Package
with a name version identical to the existing Deployment Package must
not result in any actions.
</p>
<p>Deployment packages with the same name but different versions are
considered to be <span class="emphasis"><em>versions</em></span> of the
<span class="emphasis"><em>same</em></span> deployment package. The Deployment Admin
service maintains a repository of installed Deployment Packages. This
set must not contain multiple versions of the same Deployment Package.
Installing a deployment package when a prior or later version was
already present must cause replacement of the existing deployment
package. In terms of version, this action can be either an upgrade or
downgrade.
</p>
</div>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a xmlns="" class="anchor" id="d0e49762"></a><span xmlns="" class="number">114.3</span> File Format
</h2>
</div>
</div>
</div>
<p>A Deployment Package is a standard JAR file as specified in <a xmlns="" class="xref" href="service.deploymentadmin.html#i1515091" title="JAR File Specification">[1] <em>JAR File Specification</em></a>. The extension of a Deployment Package JAR file name
should be <code class="code">.dp</code>. The MIME type of a Deployment Package JAR
should be:
</p><pre xmlns="" class="programlisting"><code>application/vnd.osgi.dp</code></pre><p>For example, valid Deployment Package JAR names are:</p><pre xmlns="" class="programlisting"><code>com.acme.chess.dp
chess.dp</code></pre><p>A Deployment Package must be formed in such a way that it can be
read with a <code class="code">JarInputStream</code> object. Therefore, the order of
the files in the JAR file is important. The order must be:
</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p><code class="code">META-INF/MANIFEST.MF</code> - A Deployment Package must
begin with a standard Java Manifest file. This rule is not explicitly
defined in the Java JAR file specification; it is implied, however, by
the known <code class="code">JarInputStream</code> class implementations.
</p>
</li>
<li class="listitem">
<p><code class="code">META-INF/*.SF, META-INF/*.DSA, META-INF/*.RS</code> - If
the Deployment Package is signed, subsequent files in the JAR must be
the signature files as defined in the manifest specification. The
signature files are not considered resources. Signing is discussed in
<a xmlns="" class="xref" href="service.deploymentadmin.html#i1599278" title="114.3.1 Signing">Signing</a>.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Localization files</em></span> - Any manifest
localization files are normally stored in the <code class="code">OSGI-INF</code>
directory. Localization files must precede the other files because the
resource processors can require localized information.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Bundles</em></span> must come before any other resource
types so that they can be installed before any processed
resources.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Resources</em></span> - Any processed resources needed
for this package. Resources are processed in the order in which they
appear in the JAR file, and dropped in reverse order.
</p>
</li>
</ol>
</div>
<p>The order of all the resources in the JAR file is significant, and
is called the <span class="emphasis"><em>resource order</em></span>. The purpose of the
resource order is to allow the JAR to be processed as a stream. It is not
necessary to buffer the input stream in memory or to hard disk, or to
allow random access to its contents. The specification allows access to
the stream sequentially. To increase the determinism, the resource order
must also determine the processing order of the bundles and the
resources.
</p>
<p>The format is shown graphically in <a xmlns="" class="xref" href="service.deploymentadmin.html#i1599435" title="Figure 114.5 Deployment Package JAR format">Figure <span class="number">114</span>.5</a>.
</p>
<div class="figure"><a xmlns="" class="anchor" id="i1599435"></a><p class="title"><strong>Figure <span xmlns="" class="number">114</span>.5 Deployment Package JAR format</strong></p>
<div class="figure-contents">
<div class="mediaobject" align="center"><img src="images/114-jar-format.png" align="middle" width="452" height="177" alt="Deployment Package JAR format" /></div>
</div>
</div><br class="figure-break" /><div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1599278"></a><span xmlns="" class="number">114.3.1</span> Signing
</h3>
</div>
</div>
</div>
<p>Deployment packages are optionally signed by JAR signing,
compatible with the operation of the standard
<code class="code">java.util.jar.JarInputStream</code> class, i.e. as defined in
<span class="emphasis"><em>JAR Structure and Manifest</em></span> of <a xmlns="" class="xref" href="introduction.html#intro.core.release" title="1.2.1 OSGi Core Release 7">OSGi Core Release 7</a>. This compatibility requires that the manifest must
be the first file in the input stream, and the signature files must
follow directly thereafter.
</p>
<p>A Deployment Package must follow the same rules for signing as
bundles, described in the Framework specification, <span class="emphasis"><em>Digitally
Signed JAR Files</em></span> in <a xmlns="" class="xref" href="introduction.html#intro.core.release" title="1.2.1 OSGi Core Release 7">OSGi Core Release 7</a>.
</p>
<p>The Deployment Admin service must reject a Deployment Package that
has an invalid signature.
</p>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1599719"></a><span xmlns="" class="number">114.3.2</span> Path Names
</h3>
</div>
</div>
</div>
<p>Path names must be limited to remove some of the unnecessary
complexities that are caused by path names that can contain any Unicode
character. Therefore, a path name must not contain any character
except:
</p><pre xmlns="" class="programlisting"><code>[A-Za-z0-9_.-]</code></pre><p>Directories are separated by a solidus character (<code class="code">'/'
\u002F</code>).
</p>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e49866"></a><span xmlns="" class="number">114.3.3</span> Deployment Package Manifest
</h3>
</div>
</div>
</div>
<p>The Manifest of a Deployment Package consists of a
<span class="emphasis"><em>global section</em></span> and separate sections for each
resource contained within it, called the <span class="emphasis"><em>Name
sections</em></span>. The global section of a Deployment Package Manifest
can contain the following headers that have a defined meaning in this
specification:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p><code class="code">DeploymentPackage-SymbolicName</code> - The name of the
deployment package as a reverse domain name. For example,
<code class="code">com.acme.chess</code>. See further <a xmlns="" class="xref" href="service.deploymentadmin.html#i1515351" title="114.3.4.1 DeploymentPackage-SymbolicName">DeploymentPackage-SymbolicName</a>.
</p>
</li>
<li class="listitem">
<p><code class="code">DeploymentPackage-Version</code> - The version of the
deployment package as defined in <a xmlns="" class="xref" href="introduction.html#intro.core.release" title="1.2.1 OSGi Core Release 7">OSGi Core Release 7</a>. See
further <a xmlns="" class="xref" href="service.deploymentadmin.html#i1515367" title="114.3.4.2 DeploymentPackage-Version">DeploymentPackage-Version</a>.
</p>
</li>
<li class="listitem">
<p><code class="code">DeploymentPackage-FixPack</code> - Marks this deployment
package as a partial update to a resident deployment package. See
<a xmlns="" class="xref" href="service.deploymentadmin.html#i1588451" title="114.4 Fix Package">Fix Package</a>.
</p>
</li>
</ul>
</div>
<p>The following headers provide information about the Deployment
Package, but are not interpreted by the Deployment Admin service.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-Name</em></span> - A human readable
of this deployment package. This name can be localized.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-Copyright</em></span> - Specifies
the copyright statement for this Deployment Package.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-ContactAddress</em></span> - How to
contact the vendor/developer of this Deployment Package.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-Description</em></span> - A short
description of this Deployment Package.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-DocURL</em></span> - A URL to any
documentation that is available for this Deployment Package. The URL
can be relative to the JAR file.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-Icon</em></span> - A URL to an
image file that is an icon for this deployment package. The URL can
be relative to the JAR file.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-Vendor</em></span> - The vendor of
the Deployment Package.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-License</em></span> - A URL to a
license file. The URL can be relative to the Deployment Package JAR
file.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-RequiredStorage</em></span> - The
minimum amount of persistent storage required by the deployment
package after successful install or update.
</p>
</li>
</ul>
</div>
<p>As with any JAR file Manifest, additional headers can be added and
must be ignored by the Deployment Admin service. If any fields have
human readable content, localization can be provided through property
files as described in <span class="emphasis"><em>Localization</em></span> in <a xmlns="" class="xref" href="introduction.html#intro.core.release" title="1.2.1 OSGi Core Release 7">OSGi Core Release 7</a>. The Deployment Admin service must always use the
raw, untranslated version of the header values.
</p>
<p>For example, the global section of a Deployment Package Manifest
could look like:
</p><pre xmlns="" class="programlisting"><code>Manifest-Version: 1.0
DeploymentPackage-SymbolicName: com.third._3d
DeploymentPacakge-Version: 1.2.3.build22032005
DeploymentPackage-Copyright: ACME Inc. (c) 2003
<span xmlns="http://www.w3.org/1999/xhtml" class="symbol">↵</span></code></pre><p>Additionally, the Deployment Package Manifest must carry a
<span class="emphasis"><em>Name section</em></span> for each resource in the JAR file
(except the resources in the <code class="code">META-INF</code> directory). Each name
section must start with an empty line (carriage return and line feed,
shown as <span class="symbol">↵</span> when its usage could be
ambiguous).
</p>
<p>The Name section must start with a <code class="code">Name</code> header that
contains the path name of the resource. This path name is also used as
resource id. The path name must be constructed with the characters as
defined in <a xmlns="" class="xref" href="service.deploymentadmin.html#i1599719" title="114.3.2 Path Names">Path Names</a>. For example:
</p><pre xmlns="" class="programlisting"><code>Name: bundles/3dlib.jar</code></pre><p>The name section can include any additional relevant meta data for
the named resource. For bundles, only the specification of the
<code class="code">Bundle-SymbolicName</code> and <code class="code">Bundle-Version</code> headers
are required, but other headers can be added. Unrecognized headers are
allowed and must be ignored by the Deployment Admin service. The Name
section is also used by the JAR signing to include digests of the actual
resources.
</p>
<p>The following headers are architected for the Name section in the
manifest of a deployment package:
</p>
<div class="itemizedlist">
<ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<p><span class="emphasis"><em>Bundle-SymbolicName</em></span> - Only for bundle
resources. This header must be identical to the Bundle Symbolic Name
of the named bundle. If there is a discrepancy, the install of the
Deployment Package must fail. If the bundle resource has no
Bundle-SymbolicName in its manifest, however, the Deployment Admin
must use the given symbolic name for the calculation of the location
of this bundle.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Bundle-Version</em></span> - Only for bundle
resources. This header must be identical to the bundle version of
the named bundle. Its syntax must follow the version syntax as
defined in the Framework specification. The installation must fail
if incorrect.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-Missing</em></span> -
(<code class="code">true|false</code>) Indicates that the resource is logically
part of the Deployment Package but that a previous version of the
Deployment Package already contained this resource there is no data
for this resource. See <a xmlns="" class="xref" href="service.deploymentadmin.html#i1588451" title="114.4 Fix Package">Fix Package</a> for a further
explanation.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>Resource-Processor</em></span> - The PID of the
Resource Processor service that must install the given
resource.
</p>
</li>
<li class="listitem">
<p><span class="emphasis"><em>DeploymentPackage-Customizer</em></span> -
(<code class="code">true|false</code>) Indicates whether this bundle is a
customizer bundle by listing a PID for the customizer service. See a
further discussion in <a xmlns="" class="xref" href="service.deploymentadmin.html#i1474626" title="114.5 Customizer">Customizer</a>.
</p>
</li>
</ul>
</div>
<p>An example Manifest of a Deployment Package that deploys the 3D
package, consisting of two bundles and no resources, could look
like:
</p><pre xmlns="" class="programlisting"><code>Manifest-Version: 1.0
DeploymentPackage-Icon: %icon
DeploymentPackage-SymbolicName: com.third._3d
DeploymentPacakge-Version: 1.2.3.build22032005
<span xmlns="http://www.w3.org/1999/xhtml" class="symbol">↵</span>
Name: bundles/3dlib.jar
SHA-1-Digest: MOez1l4gXHBo8ycYdAxstK3UvEg=
Bundle-SymbolicName: com.third._3d
Bundle-Version: 2.3.1
<span xmlns="http://www.w3.org/1999/xhtml" class="symbol">↵</span>
Name: bundles/3dnative.jar
SHA-1-Digest: N8Ow2UY4yjnHZv5zeq2I1Uv/+uE=
Bundle-SymbolicName: com.third._3d.native
Bundle-Version: 1.5.3
<span xmlns="http://www.w3.org/1999/xhtml" class="symbol">↵</span>
Name: OSGI-INF/autoconf.xml
SHA-1-Digest: M78w24912HgiZv5zeq2X1Uv-+uF=
Resource-Processor: org.osgi.deployment.rp.autoconf
<span xmlns="http://www.w3.org/1999/xhtml" class="symbol">↵</span></code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e50046"></a><span xmlns="" class="number">114.3.4</span> Deployment Package Headers
</h3>
</div>
</div>
</div>
<p>This section contains a detailed description of the different
headers for a Deployment Package with their value syntax.
</p>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1515351"></a><span xmlns="" class="number">114.3.4.1</span> DeploymentPackage-SymbolicName
</h4>
</div>
</div>
</div>
<p>The name of the deployment package. A name must follow the same
rules as Java packages. The grammar is as follows:
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-SymbolicName ::= unique-name
// See General Syntax Definitions in Core</code></pre><p>This header is mandatory and must not be localized.</p>
<p>An example is:</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-SymbolicName: com.acme.chess</code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1515367"></a><span xmlns="" class="number">114.3.4.2</span> DeploymentPackage-Version
</h4>
</div>
</div>
</div>
<p>This header defines the version of the deployment package. The
syntax follows the standard OSGi Framework rules for versions.
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-Version ::= version // See Version in Core</code></pre><p>This header is mandatory and must follow the syntax of the
version. It must not be localized.
</p>
<p>An example:</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-Version: 1.2.3.build200501041230</code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e50077"></a><span xmlns="" class="number">114.3.4.3</span> DeploymentPackage-FixPack
</h4>
</div>
</div>
</div>
<p>A fix package can be distinguished from the full format
Deployment Package through the presence of the
DeploymentPackage-FixPack header, contained within the global section
of the Manifest. The format of this header is:
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-FixPack ::= version-range
// See Version Range in Core</code></pre><p>The version range syntax is identical to the Framework module's
layer version range as defined in <a xmlns="" class="xref" href="introduction.html#intro.core.release" title="1.2.1 OSGi Core Release 7">OSGi Core Release 7</a>. For
example, a Manifest header that denotes a fix package which is only
applicable to versions 1.3 through 3.4 of a given deployment package
looks like:
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-FixPack: [1.3,3.4]</code></pre><p>See <a xmlns="" class="xref" href="service.deploymentadmin.html#i1588451" title="114.4 Fix Package">Fix Package</a> for more information about Fix
Packages.
</p>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1774992"></a><span xmlns="" class="number">114.3.4.4</span> DeploymentPackage-Icon
</h4>
</div>
</div>
</div>
<p>This header contains a URL (absolute or relative to the JAR
file) to an image resource that represents this deployment package.
Implementations should support at least the HTTP protocol as well as
the PNG image file. This URL can be localized. The Deployment Admin
service must maintain a local copy of the image resource. A URL to
this local resource can be obtained with the <a xmlns="" class="xref" href="service.deploymentadmin.html#org.osgi.service.deploymentadmin.DeploymentPackage.getIcon--" title="114.14.6.10 public URL getIcon()">getIcon()</a> method.
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-Icon ::= url
url ::= <absolute or relative URL or localization name></code></pre><p>For example:</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-Icon: %icon</code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e50107"></a><span xmlns="" class="number">114.3.4.5</span> DeploymentPackage-Name
</h4>
</div>
</div>
</div>
<p>This header is available as the <code class="code">DeploymentPackage</code>
<code class="code">getDisplayName</code> method. It provides a human readable name
that can be localized. It is available through the <a xmlns="" class="xref" href="service.deploymentadmin.html#org.osgi.service.deploymentadmin.DeploymentPackage.getDisplayName--" title="114.14.6.8 public String getDisplayName()">getDisplayName()</a> method. This name can be localized.
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage ::= name
name ::= <any value or a localization name></code></pre><p>Example:</p><pre xmlns="" class="programlisting"><code>DeploymentPackage: 3D-Library</code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1774844"></a><span xmlns="" class="number">114.3.4.6</span> DeploymentPackage-RequiredStorage
</h4>
</div>
</div>
</div>
<p>This header specifies the minimum amount of persistent storage
required by the deployment package after successful install or update.
The value is an integer that represent kilo-bytes. The value includes
the size of the bundles and any persistent storage needs and storage
needed to run the resource processors and customizers. An installation
agent can verify the availability of sufficient memory before
installing the package. A fix-pack must specify the minimum memory
requirements of the complete deployment package after the it is
applied.
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-RequiredStorage ::= number</code></pre><p>Example</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-RequiredStorage: 15</code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e50137"></a><span xmlns="" class="number">114.3.4.7</span> Bundle-SymbolicName (Name Section)
</h4>
</div>
</div>
</div>
<p>The <code class="code">Bundle-SymbolicName</code> header must be a copy of
the <code class="code">Bundle-SymbolicName</code> header in the named bundle,
including any parameters. This header must match the
Bundle-SymbolicName of the actual bundle; if it does not, the install
or update must fail. The parameters, however, can differ between
updates. The header has the following format:
</p><pre xmlns="" class="programlisting"><code>Bundle-SymbolicName: unique-name (';' parameter) *</code></pre><p>If the bundle resource has no Bundle-SymbolicName header, the
given symbolic name must be used to calculate the location of the
bundle.
</p>
<p>For example:</p><pre xmlns="" class="programlisting"><code>Name: bundles/http.jar
Bundle-SymbolicName: com.acme.http; singleton=true</code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e50156"></a><span xmlns="" class="number">114.3.4.8</span> Bundle-Version (Name Section)
</h4>
</div>
</div>
</div>
<p>The Bundle-Version header must be equal to the Bundle-Version
header in the named bundle. It must follow the format as defined for
the <code class="code">version</code> clause in <a xmlns="" class="xref" href="introduction.html#intro.core.release" title="1.2.1 OSGi Core Release 7">OSGi Core Release 7</a>.
</p><pre xmlns="" class="programlisting"><code>Bundle-Version ::= version // See Version in Core</code></pre><p>A mismatch between the version indicated in the Manifest of the
Deployment Package and the actual value in the Bundle's Manifest must
cause an installation or update to fail.
</p>
<p>For example</p><pre xmlns="" class="programlisting"><code>Bundle-Version: 1.2</code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1553906"></a><span xmlns="" class="number">114.3.4.9</span> Resource-Processor (Name Section)
</h4>
</div>
</div>
</div>
<p>The <code class="code">Resource-Processor</code> header selects an OSGi
Resource Processor service for this resource by selecting the
Resource-Processor service with the given PID as
<code class="code">service.id</code> service property. This header is optional, so
that the Deployment Package can carry resources that are not
processed: for example, license and documentation files. The format of
the header is:
</p><pre xmlns="" class="programlisting"><code>Resource-Processor ::= pid // See General Syntax Definitions in Core</code></pre><p>For example:</p><pre xmlns="" class="programlisting"><code>Name: certificate/certificates.xml
SHA-1-Digest: M78w249126182Ak5zeq2X1Uv-+uF=
Resource-Processor: com.securitas.keystore</code></pre><p>In the example, the <code class="code">certificates.xml</code> in the
<code class="code">certificate</code> directory will be processed by the Resource
Processor service registered with the service property
<code class="code">service.pid</code> set to <code class="code">com.securitas.keystore</code>.
The <code class="code">service.pid</code> is a standard Framework property to
uniquely identify a service instance called a Persistent IDentity
a.k.a. PID.
</p>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e50208"></a><span xmlns="" class="number">114.3.4.10</span> DeploymentPackage-Missing (Name Section)
</h4>
</div>
</div>
</div>
<p>Fix packs (see <a xmlns="" class="xref" href="service.deploymentadmin.html#i1588451" title="114.4 Fix Package">Fix Package</a> ) are Deployment
Packages that do not contain all the resources for a full install.
This header indicates the Bundle Symbolic Name of a bundle that is not
present in the enclosing JAR file but should be part of a prior
version of this Deployment Package. The format is:
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-Missing ::= 'true' | 'false'</code></pre><p>The default value for this header is <code class="code">false</code>. An
error results if this header is <code class="code">true</code> and the resource is
not present in the existing Deployment Package.
</p>
<p>For example:</p><pre xmlns="" class="programlisting"><code>Name: bundles/3dlib.jar
DeploymentPackage-Missing: true
Bundle-SymbolicName: com.acme.http
Bundle-Version: 3.0</code></pre></div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="d0e50229"></a><span xmlns="" class="number">114.3.4.11</span> DeploymentPackage-Customizer (Name Section)
</h4>
</div>
</div>
</div>
<p>This header is used to indicated that a resource is a customizer
bundle, as described in <a xmlns="" class="xref" href="service.deploymentadmin.html#i1474626" title="114.5 Customizer">Customizer</a>. The syntax of this
optional header is:
</p><pre xmlns="" class="programlisting"><code>DeploymentPackage-Customizer ::= 'true' |'false'</code></pre><p>The default for this header is <code class="code">false</code>.
</p>
<p>For example:</p><pre xmlns="" class="programlisting"><code>Name: bundles/3dlibcustomizer.jar
DeploymentPackage-Customizer: true
Bundle-SymbolicName: com.acme.customizer
Bundle-Version: 3.6</code></pre></div>
</div>
<div class="section">
<div xmlns="" class="titlepage">
<div>
<div>
<h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a xmlns="" class="anchor" id="i1568170"></a><span xmlns="" class="number">114.3.5</span> Localization
</h3>
</div>
</div>
</div>
<p>All human readable headers can be localized using the same
mechanism as is used to localize the manifest of a bundle. This
mechanism is described in <span class="emphasis"><em>Localization</em></span> of the <a xmlns="" class="xref" href="introduction.html#intro.core.release" title="1.2.1 OSGi Core Release 7">OSGi Core Release 7</a>.
</p>
<p>For example, a Manifest could look like:</p><pre xmlns="" class="programlisting"><code>Manifest-Version: 1.0
DeploymentPackage-ManifestVersion: 1
DeploymentPackage-SymbolicName: com.third._3d