frascati issueshttps://gitlab.ow2.org/frascati/frascati/-/issues2018-02-06T10:32:19Zhttps://gitlab.ow2.org/frascati/frascati/-/issues/105HTTP Binding : Jetty connection not closed when FraSCAti stop2018-02-06T10:32:19ZJeremie GuillemotteHTTP Binding : Jetty connection not closed when FraSCAti stopThe problem occurs when a HTTP binding is used in a composite and this composite is started on a tomcat embedded FraSCAti (packaged in a war).
When the stop command is sent to the tomcat server, the FraSCAti composite are trigered to st...The problem occurs when a HTTP binding is used in a composite and this composite is started on a tomcat embedded FraSCAti (packaged in a war).
When the stop command is sent to the tomcat server, the FraSCAti composite are trigered to stop. There is a problem with the components using a HTTP binding, the jetty resources are not unregistred/destroyed correctly.
In some cases, the java process ends but in others the java process remains alive and the resart of the application is not possible because the error "port already in use is throwed".
After some researchs, we have seen that the JettyServletManager.unregisterServlet(...) method is never called for an HTTP binding. In the HttpBinding class, there are an init and a destroy methods associated with @init and @destroy annotations. These annotations do not seem to work. The destroy method is never called and the init method is called "manually" in the FrascatiBindingHttpProcessor class (See method doInstanciate, line 154).1.5https://gitlab.ow2.org/frascati/frascati/-/issues/104Improvement for implementation velocity in FraSCAti. Add the possibility to u...2018-02-06T10:32:19ZJeremie GuillemotteImprovement for implementation velocity in FraSCAti. Add the possibility to use templates in a tree organisation.Improvement for implementation velocity in FraSCAti (ProxyImplementationVelocity.java).
Here is the original code : http://websvn.ow2.org/filedetails.php?repname=frascati&path=%2Ftrunk%2Ffrascati%2Fmodules%2Ffrascati-implementation-velo...Improvement for implementation velocity in FraSCAti (ProxyImplementationVelocity.java).
Here is the original code : http://websvn.ow2.org/filedetails.php?repname=frascati&path=%2Ftrunk%2Ffrascati%2Fmodules%2Ffrascati-implementation-velocity%2Fsrc%2Fmain%2Fjava%2Forg%2Fow2%2Ffrascati%2Fimplementation%2Fvelocity%2FServletImplementationVelocity.java
The proposition is to add this portion of code to offer the possibility to load Velocity templates not only in a base folder but also in a folder tree.
Here is the code addition to solve this problem (can be found also on GitHub : https://github.com/easysoa/EasySOA/blob/master/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-core-httpdiscoveryproxy/src/main/java/org/ow2/frascati/implementation/velocity/ProxyImplementationVelocity.java)
....
protected final String invoke(String method, VelocityContext context, String[] args, Object... parameters) {
// VelocityContext context = new VelocityContext(this.velocityContext);
context.put(params, parameters);
// FIXME: should not be called but @Lifecycle does not work as expected.
registerScaProperties();
StringWriter sw = new StringWriter();
// **** EasySOA Hack begin
int pathArgIndex = Integer.parseInt((String) context.get("pathArgIndex")); // pathArgIndex has been set as an SCA xsd:int property
int storeIndex = Integer.parseInt((String) context.get("storeIndex")); // storeIndex has been set as an SCA xsd:int property
Template template = null;
if (parameters.length > pathArgIndex) {
Object templatePathFound = parameters[pathArgIndex];
Object storeNameFound = parameters[storeIndex];
if (templatePathFound instanceof String) {
template = this.velocityEngine.getTemplate((String)storeNameFound + "/" + (String) templatePathFound);
}
}
// *** EasySOA Hack end
if (template == null) {
String name = this.velocityEngine.templateExists(method + ".vm") ? method + ".vm" : this.defaultResource;
template = this.velocityEngine.getTemplate(name);
}
if (!this.velocityEngine.invokeVelocimacro(method, method, args, context, sw)) {
template.merge(context, sw);
.....
Currently, the method parameter contains the name of the velocity template to use. It is not possible to call templates in an other folder or in a folder tree organisation.
The hack uses 2 properties to set the array position of 2 parameters "pathArgIndex" and "storeIndex". The "pathArgIndex" parameter contains the folder where to find the "storeIndex" template.
An other solution is to have a special method name (eg : folder1_folder2_template) to pass the informations.
A third solution is to use a special method name, allowing to pass special params, to be able get templates in a tree folder organisation.
1.5https://gitlab.ow2.org/frascati/frascati/-/issues/102Implementation.composite not working on FraSCAti studio2018-02-06T10:32:19ZJeremie GuillemotteImplementation.composite not working on FraSCAti studioThe tag implementation.composite is not working on FraSCAti studio.
- When an app containing an implementation.composite tag is loaded in the FraSCAti studio editor, an error is throwed an the screen remains blank (see logErrorEdit.log ...The tag implementation.composite is not working on FraSCAti studio.
- When an app containing an implementation.composite tag is loaded in the FraSCAti studio editor, an error is throwed an the screen remains blank (see logErrorEdit.log file). In the ComplexProcessor class, the method getMenuItem try to get a processor for a EObject of type SCAImplementation but there is no processor registred for this object type, so null is returned and an error is generated.
- When an app containing an implementation.composite tag is deployed locally, an error is throwed (see logErrorDeploy.log file).
The FraSCAti studio app is joined in DiscovProx.zip file.1.5https://gitlab.ow2.org/frascati/frascati/-/issues/100Unable to compile & deploy app with annotated JAXRS interface2013-03-26T09:05:35ZMarc DutooUnable to compile & deploy app with annotated JAXRS interfaceCompilation fails because it can't find the javax.ws.rs.* imports.
Cause : they are not in the compilation classpath in SCAJavaCompilerImpl.compileAll() which is only all jars that are in lib/
Short term solution :
Here is a hack in SC...Compilation fails because it can't find the javax.ws.rs.* imports.
Cause : they are not in the compilation classpath in SCAJavaCompilerImpl.compileAll() which is only all jars that are in lib/
Short term solution :
Here is a hack in SCAJavaCompilerImpl.compileAll() that adds all FStudio classpath jars to the compilation :
// .concat(System.getProperty("java.class.path")); NOT THE RIGHT VALUE when started from maven
for (java.net.URL fileUrl : ((java.net.URLClassLoader) SCAJavaCompilerImpl.class.getClassLoader()).getURLs()) { // TODO DANGEROUS, BETTER INCLUDING FOR DEPLOY
try {
libList = libList.concat(System.getProperty("path.separator"));
libList = libList.concat(new java.io.File(fileUrl.toURI()).getAbsolutePath());
} catch (java.net.URISyntaxException e) {
e.printStackTrace(); // TODO log "unable to add to classpath default classpath lib ..."
}
}
Better long term solution alternatives :
* provide only "interface" jars ex. jaxrs/ws (jsr311 jars)...
* provides all "default" FraSCAti deps that are in the classpath to the compilation
* try to take into account the fact that those jars have also to be on the Deploy platform side...1.5https://gitlab.ow2.org/frascati/frascati/-/issues/99Application creation failure make subsequent creation fails2013-03-25T12:15:43ZMarc DutooApplication creation failure make subsequent creation failsThis is a very annoying bug because it makes testing / using FraSCAti Studio heavy and cumbersome (have to restart it all every error).
When an application creation fails (ex. because compilation error "publc" instead of "public"), some...This is a very annoying bug because it makes testing / using FraSCAti Studio heavy and cumbersome (have to restart it all every error).
When an application creation fails (ex. because compilation error "publc" instead of "public"), some things are rollbacked :
* application persistence is rollbacked
* application root directory is deleted (including source dirs) in ServiceManagerImpl.createApplication()
but others are not :
* source dirs are not removed from membraneGeneration (where they have been added by addJavaSource() in ServiceManagerImpl.createApplication())
As a consequence, subsequent application creations, or any FraSCAti compilation for that matter, fail because it can't find those deleted directories, with cryptic errors such as :
Creation error
No such file or directory <.,C:\Users\user\Documents\frascati-studio\user\Fibo2\src\main\java>
that appear within TemplateActionBasicService.doActionAfterCreation() / JavaCodeTransformer.transform() / JuliacComponent.compileJavaSource() / Juliac's SourceFile.addAllJavaFiles().
Solution : remove those also from Juliac membraneGeneration, or don't delete those dirs and the application itself.
Further, check for other such "bad state" problems.1.5https://gitlab.ow2.org/frascati/frascati/-/issues/98Basic template : creation when WS binding fails2013-03-25T12:12:38ZMarc DutooBasic template : creation when WS binding failsCreating a new application using Basic template and WS binding fails (brings to an empty application page with an empty Alert box).
Cause : BindingProcessor.createBinding() compares the template-provided option value "WebService" with t...Creating a new application using Basic template and WS binding fails (brings to an empty application page with an empty Alert box).
Cause : BindingProcessor.createBinding() compares the template-provided option value "WebService" with the (WebService)BindingProcessor label "Web Service".
Solution : remove the space in one or add it in the other. Which is the logical default ? (ex. according to BindingProcessor.getBindingView(), the label should be the binding element id, but what kind of element id is it ?)1.5https://gitlab.ow2.org/frascati/frascati/-/issues/96Transaction problems on Windows2018-02-06T10:32:18ZMarc DutooTransaction problems on WindowsCreating a user account fails with a NullPointer exc in UsersImpl.createWorkspace() on line 165, because preferences.getWorkspacePath() returns null
Cause : it triggers Preferences initialization which calls PreferencesManager.verifyPre...Creating a user account fails with a NullPointer exc in UsersImpl.createWorkspace() on line 165, because preferences.getWorkspacePath() returns null
Cause : it triggers Preferences initialization which calls PreferencesManager.verifyPreference() which tries to start & commit a NEW transaction to persist the user workspace preference while there is already a current transaction
Short term solution : init Preferences before starting the first tx, ex. by adding
preferences.getWorkspacePath();
before
entityManager.getTransaction().begin();
in UsersImpl.createAccount()
Longer term solutions : evaluate interest of alternatives :
* by using the pattern "session in view" i.e. one tx per user web action, by putting an Intent over the main servlet which begins & commits tx HOWEVER COSTLY
* checking first if a tx exists by writing a
TransactionHelper {
doInTransaction {
if !tx.exists() begin();
internalDoInTransaction();
if !tx.exists() commit();
}
}
and using it by implementing internalDoInTransaction() everywhere a tx is committed now
* adding transaction boundary control by annotating classes & methods, using Spring's or without. HOWEVER this would be a major addition to FraSCAti as an app development platform...1.5https://gitlab.ow2.org/frascati/frascati/-/issues/94Database configuration problem on Windows2013-03-26T17:43:52ZMarc DutooDatabase configuration problem on WindowsOn Windows (Vista), connecting to database fails whatever Hibernate persistence properties have been set in the pom.xml
Workaround : directly set them in src/main/resources/META-INF/persistence.xml
Solution : who looks up the Hibernate ...On Windows (Vista), connecting to database fails whatever Hibernate persistence properties have been set in the pom.xml
Workaround : directly set them in src/main/resources/META-INF/persistence.xml
Solution : who looks up the Hibernate properties in the pom and sets them on Hibernate ??1.5https://gitlab.ow2.org/frascati/frascati/-/issues/92Null user home directory (workspace)2013-03-26T09:03:56ZMarc DutooNull user home directory (workspace)We've succeeded in creating a user account without home directory. Later this brings up file URLs containing ".../null/...", and possibly other errors.
Solution :
* if empty (after space trimming), set it to the user login by default
* ...We've succeeded in creating a user account without home directory. Later this brings up file URLs containing ".../null/...", and possibly other errors.
Solution :
* if empty (after space trimming), set it to the user login by default
* if any error while creating it, display this error to the user
* in addition, better : fill it by default to the user name in the UI1.5https://gitlab.ow2.org/frascati/frascati/-/issues/91Improve startup doc (README)2018-02-06T10:32:18ZMarc DutooImprove startup doc (README)* add to README :
- to create & fill database in command line :
$> mysql -u root -p
$mysql> create database easysoasimplified
$> mysql -u root -p < *.sql
- to debug : export MAVEN_OPTS="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_soc...* add to README :
- to create & fill database in command line :
$> mysql -u root -p
$mysql> create database easysoasimplified
$> mysql -u root -p < *.sql
- to debug : export MAVEN_OPTS="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 $MAVEN_OPTS"
- how to package & deploy in production / standalone / without maven
- The Frascati studio service is deployed at http://localhost:8095/easySoa/
* add to README FAQ :
- to avoid error "java.lang.OutOfMemoryError: PermGen space" : export MAVEN_OPTS="-XX:MaxPermSize=128m $MAVEN_OPTS" (happens ex. when proxying http://www.w3schools.com/webservices/tempconvert.asmx?WSDL )1.5https://gitlab.ow2.org/frascati/frascati/-/issues/89Better app compilation error handling2018-02-06T10:32:19ZMarc DutooBetter app compilation error handling* display application source compilation error (ex. "publc" instead of "public") message to the user, so he knows what the problem is about
* if a class is already defined (ex. because of a previous failed compilation), subsequent appli...* display application source compilation error (ex. "publc" instead of "public") message to the user, so he knows what the problem is about
* if a class is already defined (ex. because of a previous failed compilation), subsequent application source compilations fail => create a new sub classloader for each compilation to do it in, rather than reusing the same one
* if in an app there is a null binding.w, NullPointer ex in ComplexProcessor line 58 and before that IOException in velocity => add guard checks in templates
* when deploying, fails if app/lib does not exist => check if it exists and create it if not1.5https://gitlab.ow2.org/frascati/frascati/-/issues/86Not thread safe2018-09-10T23:26:44ZPhilippe MerleNot thread safeJAXB marshalling and unmarshalling are not thread safe.
Then multi-threading applications could generate strange behaviors or exceptions.
JAXB marshalling and unmarshalling are not thread safe.
Then multi-threading applications could generate strange behaviors or exceptions.
1.5https://gitlab.ow2.org/frascati/frascati/-/issues/83Don't use Thread.currentThread().getContextClassLoader() to load membrane pro...2018-02-06T10:32:16ZPhilippe MerleDon't use Thread.currentThread().getContextClassLoader() to load membrane provider classes.Don't use the current thread context class loader to load membrane provider classes.
File to modify: http://websvn.ow2.org/filedetails.php?repname=frascati&path=%2Ftrunk%2Ffrascati%2Fmodules%2Ffrascati-component-factory%2Fsrc%2Fmain%2Fja...Don't use the current thread context class loader to load membrane provider classes.
File to modify: http://websvn.ow2.org/filedetails.php?repname=frascati&path=%2Ftrunk%2Ffrascati%2Fmodules%2Ffrascati-component-factory%2Fsrc%2Fmain%2Fjava%2Forg%2Fow2%2Ffrascati%2Fcomponent%2Ffactory%2Fimpl%2FMembraneProviderImpl.java
1.5https://gitlab.ow2.org/frascati/frascati/-/issues/81FrasSCAti Archetype2012-02-01T15:11:12ZAntonio De Almeida Souza NetoFrasSCAti ArchetypeCreate a FraSCAti Archetype to guide FraSCAti users to start new SCA applications. The feature must create and configure the application structure, containing a POM ready to use, a composite, a readme and an initial code and test.Create a FraSCAti Archetype to guide FraSCAti users to start new SCA applications. The feature must create and configure the application structure, containing a POM ready to use, a composite, a readme and an initial code and test.1.5https://gitlab.ow2.org/frascati/frascati/-/issues/78Library conflicts2012-01-26T14:24:09ZGwenael CattezLibrary conflictsFixing Jgroups library conflict in JMS module seems to have a side effect on BPEL module, affect build of frascati because BPEL example fails.Fixing Jgroups library conflict in JMS module seems to have a side effect on BPEL module, affect build of frascati because BPEL example fails.1.5https://gitlab.ow2.org/frascati/frascati/-/issues/72modifying component property through SCAPropertyController interface2013-03-14T16:56:05ZRussel nzekwamodifying component property through SCAPropertyController interfaceWhen you promote a component property to the composite level, and try to modify the later (component property) through SCAPropertyController of the composite, it doesn't affect the property of the internal component, which keeps the orig...When you promote a component property to the composite level, and try to modify the later (component property) through SCAPropertyController of the composite, it doesn't affect the property of the internal component, which keeps the original value.1.5https://gitlab.ow2.org/frascati/frascati/-/issues/70Problem to close a Jetty HTTP component2018-02-06T10:32:15ZJeremie GuillemotteProblem to close a Jetty HTTP componentContext :
In HttpDIscoveryProxy, using 2 test classes : one for the discovery mode and on for the validated mode. Each class work only with mocks. Several composite files are used, one for the main proxy and 3 others for the mocks.
The ...Context :
In HttpDIscoveryProxy, using 2 test classes : one for the discovery mode and on for the validated mode. Each class work only with mocks. Several composite files are used, one for the main proxy and 3 others for the mocks.
The conposite files are loaded with FraSCAti.processComposite() method and unloaded with FraSCAti.close() method.
The used composite works with HTTP binding and WS binding.
The tests works very well separatelly in Eclipse.
Problem :
when a maven build is launched, the 2 tests are executed one after the other. The first test works well but the second hang on an HTTP service. It seems that a composite file cannot be successfully loaded in the second test. Jetty process stay with a 'STARTING' status during the start of the HTTP component.
How to reproduce :
See the special test class FraSCAtiBindingHttpCloseBugTest.java. Open ithe HttpDiscoveryProxy project in Eclipse and run this class a JUnit test.
Origin of the problem :
In the class org.ow2.frascati.servlet.manager.JettyServletManager, in the method unregisterServlet(final String uri), there is still a TODO tag : jettyServer.removeServant(URL url). It seems that the portion of code we try to use is not yet implemented.
This issue is also reported on EasySOA project at https://github.com/easysoa/easysoa-model-demo/issues/371.5https://gitlab.ow2.org/frascati/frascati/-/issues/67Move to Apache CXF 2.4.22018-02-06T10:32:15ZPhilippe MerleMove to Apache CXF 2.4.21.5https://gitlab.ow2.org/frascati/frascati/-/issues/64To support 64bit platform by using jline-0.9.92.jar2018-02-06T10:32:15ZLEE Ka Chun AnthonyTo support 64bit platform by using jline-0.9.92.jarjline-0.9.91.jar causes startup crash
exception:
jline_.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
have to be replaced by jline-0.9.92.jarjline-0.9.91.jar causes startup crash
exception:
jline_.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
have to be replaced by jline-0.9.92.jar1.5https://gitlab.ow2.org/frascati/frascati/-/issues/63Add modularity to the remote introspection module2018-02-06T10:32:14ZChristophe DemareyAdd modularity to the remote introspection moduleAdd modularity to the remote introspection module.
I we don't want to use the reconfiguration service, we don't need the FScript dependency.
The idea is top split this module in two parts :
- the first part providing remote introspectio...Add modularity to the remote introspection module.
I we don't want to use the reconfiguration service, we don't need the FScript dependency.
The idea is top split this module in two parts :
- the first part providing remote introspection (with Fractal API) and deployment
- the second part providing remote reconfiguration with FScript.1.5