ontomde-demo-acegi 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +2 -0
- data/Manifest.txt +46 -0
- data/README.txt +79 -0
- data/Rakefile +22 -0
- data/bin/ontomde-demo-acegi-install +11 -0
- data/demo/1-base.bat +6 -0
- data/demo/1-base.sh +5 -0
- data/demo/2-unpack.bat +6 -0
- data/demo/2-unpack.sh +5 -0
- data/demo/3-generate.bat +4 -0
- data/demo/3-generate.sh +5 -0
- data/demo/4-start-webapp-nosecurity.bat +4 -0
- data/demo/4-start-webapp-nosecurity.sh +4 -0
- data/demo/5-start-webapp.bat +7 -0
- data/demo/5-start-webapp.sh +4 -0
- data/demo/9-eclipse.bat +5 -0
- data/demo/9-eclipse.sh +6 -0
- data/demo/doc/images/_Ea8UYu6FEdyp6cGW4pi6rw.GIF +0 -0
- data/demo/doc/images/_XH8XYjuOEdyltIorAFYEcg.GIF +0 -0
- data/demo/doc/images/_o7gEAsg1Edy3YZbvY96G9w.GIF +0 -0
- data/demo/doc/images/_s1Mq8O6sEdyp6cGW4pi6rw.GIF +0 -0
- data/demo/domain/pom.xml +74 -0
- data/demo/domain/src/main/java/administration/ApplicationUser.java +649 -0
- data/demo/domain/src/main/java/administration/SecurityPanel.java +1408 -0
- data/demo/domain/src/main/java/demo1GSMNetwork/BaseTransceiverStation.java +570 -0
- data/demo/domain/src/main/java/demo2testModel/Client.java +1099 -0
- data/demo/domain/src/main/java/xmda/security/ProviderImpl.java +367 -0
- data/demo/ear/pom.xml +160 -0
- data/demo/mda/clean-generated.sh +24 -0
- data/demo/mda/pom.xml +181 -0
- data/demo/mda/src/main/mda/customDataTypes.rb +5 -0
- data/demo/mda/src/main/mda/dbDiscriminatorCache.rb +94 -0
- data/demo/mda/src/main/mda/mda.rb +0 -0
- data/demo/mda/src/main/model/.project +12 -0
- data/demo/mda/src/main/model/model.emx +3139 -0
- data/demo/mda/src/main/model/model.emx.nt +4608 -0
- data/demo/mda/src/main/model/model.emx.nt_kb.pprj +1768 -0
- data/demo/mda/src/main/model/model.emx.nt_kb.rdf +258 -0
- data/demo/mda/src/main/model/model.emx.nt_kb.rdfs +3345 -0
- data/demo/mda/src/main/profil-uml/.project +11 -0
- data/demo/mda/src/main/profil-uml/OntoMDE-profil.epx +615 -0
- data/demo/mda/src/main/resources/formatter.properties +260 -0
- data/demo/pom.xml +21 -0
- data/demo/projectbase/pom.xml +96 -0
- data/demo/webapp/pom.xml +125 -0
- data/lib/ontomde-demo-acegi.rb +1 -0
- metadata +109 -0
@@ -0,0 +1,367 @@
|
|
1
|
+
package xmda.security;
|
2
|
+
|
3
|
+
import java.lang.reflect.Method;
|
4
|
+
import java.security.Principal;
|
5
|
+
import java.util.ArrayList;
|
6
|
+
import java.util.Comparator;
|
7
|
+
import java.util.HashSet;
|
8
|
+
import java.util.List;
|
9
|
+
import java.util.Set;
|
10
|
+
import java.util.TreeSet;
|
11
|
+
import java.util.Vector;
|
12
|
+
|
13
|
+
import org.acegisecurity.ConfigAttributeDefinition;
|
14
|
+
import org.acegisecurity.GrantedAuthority;
|
15
|
+
import org.acegisecurity.GrantedAuthorityImpl;
|
16
|
+
import org.acegisecurity.SecurityConfig;
|
17
|
+
import org.acegisecurity.context.SecurityContextHolder;
|
18
|
+
import org.acegisecurity.userdetails.User;
|
19
|
+
import org.acegisecurity.userdetails.UserDetails;
|
20
|
+
|
21
|
+
import xmda.security.authorization.DBAuthorizationDefinitionSource;
|
22
|
+
import administration.ApplicationUser;
|
23
|
+
import administration.BusinessGroup;
|
24
|
+
import administration.SecureField;
|
25
|
+
import administration.SecureMethod;
|
26
|
+
import administration.SecureWebFilter;
|
27
|
+
import administration.SecurityRole;
|
28
|
+
|
29
|
+
public class ProviderImpl implements Provider {
|
30
|
+
|
31
|
+
public static final boolean GRANT_ACCESS=true;
|
32
|
+
public static final boolean DENY_ACCESS=false;
|
33
|
+
|
34
|
+
private static final boolean securityIsDisabled = System
|
35
|
+
.getProperty("webapp.security.mode") != null
|
36
|
+
&& System.getProperty("webapp.security.mode").equalsIgnoreCase(
|
37
|
+
"disable");
|
38
|
+
|
39
|
+
public static boolean getSecurityIsDisabled() {
|
40
|
+
return securityIsDisabled;
|
41
|
+
}
|
42
|
+
|
43
|
+
private Object principalObject;
|
44
|
+
|
45
|
+
public UserDetails loadUser(String userName) {
|
46
|
+
|
47
|
+
List<administration.ApplicationUser> users = administration.ApplicationUser
|
48
|
+
.findAll((ApplicationUser) null);
|
49
|
+
|
50
|
+
UserDetails userToIdentify = null;
|
51
|
+
|
52
|
+
for (administration.ApplicationUser user : users) {
|
53
|
+
|
54
|
+
if (userName != null && userName.equalsIgnoreCase(user.getLogin())) {
|
55
|
+
|
56
|
+
userToIdentify = new User(user.getLogin(), user.getPassword(),
|
57
|
+
true, true, true, true, retrieveAuthorities(user));
|
58
|
+
|
59
|
+
break;
|
60
|
+
|
61
|
+
}
|
62
|
+
|
63
|
+
}
|
64
|
+
|
65
|
+
principalObject = userToIdentify;
|
66
|
+
return userToIdentify;
|
67
|
+
}
|
68
|
+
|
69
|
+
private static GrantedAuthority[] retrieveAuthorities(ApplicationUser user) {
|
70
|
+
|
71
|
+
GrantedAuthority[] authorities = null;
|
72
|
+
|
73
|
+
List<SecurityRole> userRoles = new ArrayList<SecurityRole>();
|
74
|
+
|
75
|
+
if (user != null && user.getUserGroup() != null) {
|
76
|
+
|
77
|
+
Set<BusinessGroup> groups = user.getUserGroup();
|
78
|
+
|
79
|
+
for (BusinessGroup group : groups) {
|
80
|
+
|
81
|
+
userRoles.addAll(group.getGroupRole());
|
82
|
+
|
83
|
+
}
|
84
|
+
|
85
|
+
authorities = new GrantedAuthority[userRoles.size()];
|
86
|
+
|
87
|
+
for (int i = 0; i < userRoles.size(); i++) {
|
88
|
+
|
89
|
+
authorities[i] = new GrantedAuthorityImpl(userRoles.get(i)
|
90
|
+
.getRoleName());
|
91
|
+
|
92
|
+
}
|
93
|
+
|
94
|
+
}
|
95
|
+
|
96
|
+
for (GrantedAuthority auth : authorities) {
|
97
|
+
|
98
|
+
}
|
99
|
+
|
100
|
+
return authorities;
|
101
|
+
|
102
|
+
}
|
103
|
+
|
104
|
+
public boolean hasViewRights(String fieldName) {
|
105
|
+
|
106
|
+
boolean isViewable = true;
|
107
|
+
|
108
|
+
if (!securityIsDisabled) {
|
109
|
+
|
110
|
+
principalObject = SecurityContextHolder.getContext()
|
111
|
+
.getAuthentication().getPrincipal();
|
112
|
+
|
113
|
+
if (principalObject instanceof UserDetails) {
|
114
|
+
|
115
|
+
UserDetails principal = (UserDetails) principalObject;
|
116
|
+
|
117
|
+
SecureField toSecure = null;
|
118
|
+
|
119
|
+
GrantedAuthority[] grantedRoles = principal.getAuthorities();
|
120
|
+
|
121
|
+
List<SecureField> fieldList = SecureField
|
122
|
+
.findAll((SecureField) null);
|
123
|
+
|
124
|
+
for (SecureField field : fieldList) {
|
125
|
+
if (field.getDefinition() == null) {
|
126
|
+
System.out
|
127
|
+
.println("Secured field skipped. missing getDefinition()");
|
128
|
+
continue;
|
129
|
+
}
|
130
|
+
|
131
|
+
String enumField = field.getDefinition().ownerClass
|
132
|
+
.getCanonicalName()
|
133
|
+
+ "." + field.getDefinition().propertyName;
|
134
|
+
|
135
|
+
if (fieldName.equalsIgnoreCase(enumField)) {
|
136
|
+
toSecure = field;
|
137
|
+
break;
|
138
|
+
}
|
139
|
+
}
|
140
|
+
|
141
|
+
if (toSecure != null) {
|
142
|
+
|
143
|
+
if (toSecure.getDefinition().isSecured) {
|
144
|
+
isViewable = false;
|
145
|
+
Set<SecurityRole> securityRoles = toSecure
|
146
|
+
.getSecureFieldRoles();
|
147
|
+
for (SecurityRole sRole : securityRoles) {
|
148
|
+
for (GrantedAuthority authority : grantedRoles) {
|
149
|
+
if (authority.getAuthority().equalsIgnoreCase(
|
150
|
+
sRole.getRoleName())) {
|
151
|
+
isViewable = true;
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
}
|
156
|
+
}
|
157
|
+
} else {
|
158
|
+
|
159
|
+
// Erreur, le nom du champ a �t� modifi� sur la JSP
|
160
|
+
|
161
|
+
}
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
return isViewable;
|
166
|
+
|
167
|
+
}
|
168
|
+
|
169
|
+
|
170
|
+
/*
|
171
|
+
* Method called by pointcut @Before on method annotated @Secure
|
172
|
+
* Must return true for access to be granted.
|
173
|
+
* @see xmda.security.Provider#hasMethodAccess(java.lang.String, java.lang.Object)
|
174
|
+
*
|
175
|
+
* @param signature name of the method called
|
176
|
+
* @param target object being accessed
|
177
|
+
* @return true if access granted, false if access denied.
|
178
|
+
*/
|
179
|
+
public boolean hasMethodAccess(final String signature, final Object target) {
|
180
|
+
System.out.println("hasMethodAccess ??");
|
181
|
+
if (securityIsDisabled) {
|
182
|
+
// Server is in securityIsDisabled debug mode.
|
183
|
+
// Allow access
|
184
|
+
System.out.println("granted: WARNING SERVER IN NO SECURITY MODE");
|
185
|
+
return GRANT_ACCESS;
|
186
|
+
}
|
187
|
+
|
188
|
+
// user principal
|
189
|
+
principalObject = SecurityContextHolder.getContext()
|
190
|
+
.getAuthentication().getPrincipal();
|
191
|
+
if (!(principalObject instanceof UserDetails)) {
|
192
|
+
System.out
|
193
|
+
.println("denied: Access denied because of Internal error. Bad principalObject returned by principalObject");
|
194
|
+
return DENY_ACCESS;
|
195
|
+
}
|
196
|
+
UserDetails principal = (UserDetails) principalObject;
|
197
|
+
|
198
|
+
boolean hasAcces = false;
|
199
|
+
|
200
|
+
// Example: com.xyz.Aclass.doThat
|
201
|
+
|
202
|
+
// STEP 1: look for role granting this method.
|
203
|
+
boolean foundSecureMethod = false;
|
204
|
+
Set<SecurityRole> okRole = getGrantingRoles(target, signature);
|
205
|
+
if (okRole.isEmpty()) {
|
206
|
+
System.out
|
207
|
+
.println("denied: access denied because no possible role/SecureMethod grant found (foundSecureMethod="
|
208
|
+
+ foundSecureMethod + ")");
|
209
|
+
return DENY_ACCESS;
|
210
|
+
}
|
211
|
+
// STEP 2: check if SecureMethods found match user authorization.
|
212
|
+
filterOutNotGrantedRole(principal, okRole);
|
213
|
+
if (okRole.isEmpty()) {
|
214
|
+
System.out
|
215
|
+
.println("denied: access denied because user has no eligible role");
|
216
|
+
return DENY_ACCESS;
|
217
|
+
}
|
218
|
+
if (containsRoleNotRequiringComputedAccessControlCriteria(okRole)) {
|
219
|
+
System.out.println("Access granted trough role with computed criteria");
|
220
|
+
return GRANT_ACCESS;
|
221
|
+
}
|
222
|
+
|
223
|
+
Set<GlobalComputedAccessControlCriteria> requiredGrants=getRequiredGrants(okRole);
|
224
|
+
|
225
|
+
Set<xmda.security.GlobalComputedAccessControlCriteria> grants=getGrantedCriteria(target,principal);
|
226
|
+
if (grants.isEmpty()) {
|
227
|
+
System.out
|
228
|
+
.println("denied: access denied because computed grants is empty");
|
229
|
+
return DENY_ACCESS;
|
230
|
+
}
|
231
|
+
grants.retainAll(requiredGrants);
|
232
|
+
if (grants.isEmpty()) {
|
233
|
+
System.out
|
234
|
+
.println("denied: access denied because computed grants is empty do not match required grants");
|
235
|
+
return DENY_ACCESS;
|
236
|
+
}
|
237
|
+
System.out.println("granted: access granted");
|
238
|
+
return GRANT_ACCESS;
|
239
|
+
}
|
240
|
+
|
241
|
+
private Set<SecurityRole> getGrantingRoles(final Object target,
|
242
|
+
final String signature) {
|
243
|
+
String completeSignature = target.getClass().getCanonicalName() + "."
|
244
|
+
+ signature;
|
245
|
+
Set<SecurityRole> okRole = new java.util.HashSet<SecurityRole>();
|
246
|
+
List<SecureMethod> methods = SecureMethod.findAll((SecureMethod) null);
|
247
|
+
for (SecureMethod method : methods) {
|
248
|
+
String enumMethod = method.getSignature().ownerClass
|
249
|
+
.getCanonicalName()
|
250
|
+
+ "." + method.getSignature().operationName;
|
251
|
+
if (completeSignature.equals(enumMethod)) {
|
252
|
+
okRole.addAll(method.getSecureMethodRoles());
|
253
|
+
break;
|
254
|
+
}
|
255
|
+
}
|
256
|
+
return okRole;
|
257
|
+
}
|
258
|
+
|
259
|
+
private void filterOutNotGrantedRole(UserDetails principal,
|
260
|
+
Set<SecurityRole> okRole) {
|
261
|
+
GrantedAuthority[] authorities = principal.getAuthorities();
|
262
|
+
role_loop: for (SecurityRole role : okRole) {
|
263
|
+
for (GrantedAuthority authority : authorities) {
|
264
|
+
if (authority.getAuthority().equals(role.getRoleName())) {
|
265
|
+
// we keep this role
|
266
|
+
continue role_loop;
|
267
|
+
}
|
268
|
+
}
|
269
|
+
// We have reach the end of the authority loop and role was not
|
270
|
+
// granted.
|
271
|
+
// Let's remove it from our ok list
|
272
|
+
okRole.remove(role);
|
273
|
+
}
|
274
|
+
}
|
275
|
+
|
276
|
+
private boolean containsRoleNotRequiringComputedAccessControlCriteria(
|
277
|
+
Set<SecurityRole> okRole) {
|
278
|
+
for (SecurityRole role : okRole) {
|
279
|
+
if (role.getRequiredComputedAccessRight() == null) {
|
280
|
+
// we found one role does not require computation.
|
281
|
+
return true;
|
282
|
+
}
|
283
|
+
}
|
284
|
+
return false;
|
285
|
+
}
|
286
|
+
|
287
|
+
public static final String COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME = "getComputedAccessControlGrant";
|
288
|
+
|
289
|
+
private boolean containsGrantedComputedAccessControlCriteria(
|
290
|
+
Set<SecurityRole> okRole, Object target, UserDetails principal) {
|
291
|
+
return true;
|
292
|
+
|
293
|
+
}
|
294
|
+
private Set<xmda.security.GlobalComputedAccessControlCriteria> getRequiredGrants(Set<SecurityRole> okRole) {
|
295
|
+
Set<xmda.security.GlobalComputedAccessControlCriteria> grants=new java.util.HashSet<xmda.security.GlobalComputedAccessControlCriteria>();
|
296
|
+
for (SecurityRole role : okRole) {
|
297
|
+
grants.add(role.getRequiredComputedAccessRight());
|
298
|
+
}
|
299
|
+
return grants;
|
300
|
+
}
|
301
|
+
private Set<xmda.security.GlobalComputedAccessControlCriteria> getGrantedCriteria(
|
302
|
+
Object target,UserDetails principal) {
|
303
|
+
String longClassName = target.getClass().getName();
|
304
|
+
|
305
|
+
try {
|
306
|
+
Class<?> targetClass = Class.forName(longClassName);
|
307
|
+
Method method = targetClass
|
308
|
+
.getMethod(COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME,
|
309
|
+
UserDetails.class);
|
310
|
+
if (method == null) {
|
311
|
+
System.out.println("Missing method "
|
312
|
+
+ COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME
|
313
|
+
+ " in class " + longClassName);
|
314
|
+
}
|
315
|
+
return (Set<xmda.security.GlobalComputedAccessControlCriteria>) method
|
316
|
+
.invoke(target, principal);
|
317
|
+
} catch (Exception e) {
|
318
|
+
System.out.println("ERROR" + e);
|
319
|
+
e.printStackTrace();
|
320
|
+
}
|
321
|
+
//deny access
|
322
|
+
return new java.util.HashSet<xmda.security.GlobalComputedAccessControlCriteria>();
|
323
|
+
}
|
324
|
+
|
325
|
+
public List getWebFiltersDefinition() {
|
326
|
+
|
327
|
+
List requestMap = new Vector();
|
328
|
+
|
329
|
+
DBAuthorizationDefinitionSource dbauth = new DBAuthorizationDefinitionSource();
|
330
|
+
|
331
|
+
int count = 0;
|
332
|
+
|
333
|
+
Set<SecureWebFilter> securedObjects = new TreeSet<SecureWebFilter>(
|
334
|
+
new Comparator<SecureWebFilter>() {
|
335
|
+
|
336
|
+
public int compare(SecureWebFilter o1, SecureWebFilter o2) {
|
337
|
+
|
338
|
+
return Integer.valueOf(o1.getSortOrder()).compareTo(
|
339
|
+
Integer.valueOf(o2.getSortOrder()));
|
340
|
+
}
|
341
|
+
});
|
342
|
+
|
343
|
+
List<SecureWebFilter> securedUrls = SecureWebFilter
|
344
|
+
.findAll((SecureWebFilter) null);
|
345
|
+
|
346
|
+
securedObjects.addAll(securedUrls);
|
347
|
+
|
348
|
+
ConfigAttributeDefinition def = new ConfigAttributeDefinition();
|
349
|
+
|
350
|
+
for (SecureWebFilter filterInvocation : securedObjects) {
|
351
|
+
|
352
|
+
def = new ConfigAttributeDefinition();
|
353
|
+
for (administration.SecurityRole role : filterInvocation
|
354
|
+
.getSecureURLRoles()) {
|
355
|
+
def.addConfigAttribute(new SecurityConfig(role.getRoleName()));
|
356
|
+
|
357
|
+
requestMap.add(count, dbauth.new EntryHolder(filterInvocation
|
358
|
+
.getUrl(), def));
|
359
|
+
count++;
|
360
|
+
}
|
361
|
+
}
|
362
|
+
|
363
|
+
return requestMap;
|
364
|
+
|
365
|
+
}
|
366
|
+
|
367
|
+
}
|
data/demo/ear/pom.xml
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
2
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
3
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
4
|
+
<modelVersion>4.0.0</modelVersion>
|
5
|
+
<parent>
|
6
|
+
<groupId>ontomde.sample</groupId>
|
7
|
+
<artifactId>projectbase</artifactId>
|
8
|
+
<version>1.0-SNAPSHOT</version>
|
9
|
+
</parent>
|
10
|
+
<artifactId>sample-ear</artifactId>
|
11
|
+
<packaging>ear</packaging>
|
12
|
+
<name>sample-ear</name>
|
13
|
+
<url>http://maven.apache.org</url>
|
14
|
+
<dependencies>
|
15
|
+
|
16
|
+
<dependency>
|
17
|
+
<groupId>ontomde</groupId>
|
18
|
+
<artifactId>ontomde-bpm-client</artifactId>
|
19
|
+
<version>${ontomde.lib.version}</version>
|
20
|
+
<type>ejb</type>
|
21
|
+
</dependency>
|
22
|
+
|
23
|
+
<dependency>
|
24
|
+
<groupId>${pom.groupId}</groupId>
|
25
|
+
<artifactId>domain</artifactId>
|
26
|
+
<version>${pom.version}</version>
|
27
|
+
<type>ejb</type>
|
28
|
+
</dependency>
|
29
|
+
|
30
|
+
<dependency>
|
31
|
+
<groupId>${pom.groupId}</groupId>
|
32
|
+
<artifactId>webapp</artifactId>
|
33
|
+
<version>${pom.version}</version>
|
34
|
+
<type>war</type>
|
35
|
+
</dependency>
|
36
|
+
|
37
|
+
</dependencies>
|
38
|
+
|
39
|
+
<!-- 4. Specify the content of generated artifact. -->
|
40
|
+
<build>
|
41
|
+
|
42
|
+
<!-- 4.1. Specify the final name of the artifact. -->
|
43
|
+
<finalName>${artifactId}</finalName>
|
44
|
+
|
45
|
+
<defaultGoal>package</defaultGoal>
|
46
|
+
|
47
|
+
<!-- 4.2. We don't want to filter for this module: "filters" section is empty. -->
|
48
|
+
|
49
|
+
<plugins>
|
50
|
+
|
51
|
+
<plugin>
|
52
|
+
<groupId>org.apache.maven.plugins</groupId>
|
53
|
+
<artifactId>maven-ear-plugin</artifactId>
|
54
|
+
<configuration>
|
55
|
+
<encoding>UTF-8</encoding>
|
56
|
+
<version>5</version>
|
57
|
+
<!-- 4.5. Specify modules to include. -->
|
58
|
+
<modules>
|
59
|
+
<webModule>
|
60
|
+
<groupId>${pom.groupId}</groupId>
|
61
|
+
<artifactId>webapp</artifactId>
|
62
|
+
<contextRoot>/webapp</contextRoot>
|
63
|
+
<!-- 4.5.3.1. Only if you want different file name inside "ear" file.
|
64
|
+
<bundleFileName>myBundleWebApplicationModule1FileName</bundleFileName>
|
65
|
+
-->
|
66
|
+
<!-- 4.5.3.2. Specify the context root if you need different name. -->
|
67
|
+
<!-- Default is: "/${pom.artifactId} -->
|
68
|
+
</webModule>
|
69
|
+
<!-- 4.5.2. Include EJB Module. -->
|
70
|
+
<ejbModule>
|
71
|
+
<groupId>ontomde</groupId>
|
72
|
+
<artifactId>ontomde-bpm-client</artifactId>
|
73
|
+
</ejbModule>
|
74
|
+
<ejbModule>
|
75
|
+
<groupId>${pom.groupId}</groupId>
|
76
|
+
<artifactId>domain</artifactId>
|
77
|
+
</ejbModule>
|
78
|
+
</modules>
|
79
|
+
<archive>
|
80
|
+
<addMavenDescriptor>false</addMavenDescriptor>
|
81
|
+
</archive>
|
82
|
+
</configuration>
|
83
|
+
</plugin>
|
84
|
+
|
85
|
+
</plugins>
|
86
|
+
</build>
|
87
|
+
|
88
|
+
<profiles>
|
89
|
+
<profile>
|
90
|
+
<id>JBOSS</id>
|
91
|
+
<activation>
|
92
|
+
<property>
|
93
|
+
<!-- a BUG avoid using ${env.JEE_SERVER} instead using mvn task -DJEE_SERVER -->
|
94
|
+
<name>JEE_SERVER</name>
|
95
|
+
<value>JBOSS</value>
|
96
|
+
</property>
|
97
|
+
</activation>
|
98
|
+
<build>
|
99
|
+
<plugins>
|
100
|
+
<plugin>
|
101
|
+
<groupId>org.codehaus.mojo</groupId>
|
102
|
+
<artifactId>jboss-maven-plugin</artifactId>
|
103
|
+
<executions>
|
104
|
+
<execution>
|
105
|
+
<phase>install</phase>
|
106
|
+
<goals>
|
107
|
+
<goal>deploy</goal>
|
108
|
+
</goals>
|
109
|
+
</execution>
|
110
|
+
</executions>
|
111
|
+
<configuration>
|
112
|
+
<jbossHome>
|
113
|
+
C:\applis\AppServers\jboss-5.0.0.Beta2
|
114
|
+
</jbossHome>
|
115
|
+
</configuration>
|
116
|
+
</plugin>
|
117
|
+
</plugins>
|
118
|
+
</build>
|
119
|
+
</profile>
|
120
|
+
<profile>
|
121
|
+
|
122
|
+
<id>GLASSFISH</id>
|
123
|
+
<activation>
|
124
|
+
<property>
|
125
|
+
<!-- a BUG avoid using ${env.JEE_SERVER} instead using mvn task -DJEE_SERVER -->
|
126
|
+
<name>JEE_SERVER</name>
|
127
|
+
<value>GLASSFISH</value>
|
128
|
+
</property>
|
129
|
+
</activation>
|
130
|
+
<build>
|
131
|
+
<plugins>
|
132
|
+
<plugin>
|
133
|
+
<groupId>pl.sliwa.maven.plugin</groupId>
|
134
|
+
<artifactId>glassfish-maven-plugin</artifactId>
|
135
|
+
<version>1.0-SNAPSHOT</version>
|
136
|
+
<executions>
|
137
|
+
<execution>
|
138
|
+
<phase>install</phase>
|
139
|
+
<goals>
|
140
|
+
<goal>deploy</goal>
|
141
|
+
</goals>
|
142
|
+
</execution>
|
143
|
+
</executions>
|
144
|
+
<configuration>
|
145
|
+
<glassfishHome>
|
146
|
+
c:\applis\AppServers\glassfish-v2-b58
|
147
|
+
</glassfishHome>
|
148
|
+
<domain>runtime</domain>
|
149
|
+
<domaindir>
|
150
|
+
c:\MesProjets\agis\ejb3
|
151
|
+
</domaindir>
|
152
|
+
<port>8048</port>
|
153
|
+
</configuration>
|
154
|
+
</plugin>
|
155
|
+
</plugins>
|
156
|
+
</build>
|
157
|
+
</profile>
|
158
|
+
</profiles>
|
159
|
+
|
160
|
+
</project>
|