Responsibilities:
• Provide high level technical architecture, design documents and build of business applications and supporting functions based upon customer’s requirements.
• Produce a detailed functional design document to match customer requirements
• Co-operate with the customer’s technical architect to produce a technical specification for custom development and systems integration requirements.
• Ensure delivered solutions are realized in time frame committed
• Participate and lead the project meetings and present the solution with the customer if needed
• Review the work of other team members and ensure it meets the required standards
• Work with team members of the team to improve their technical and functional knowledge and skills.
• Act as a mentor to all team members on their assigned project tasks.
• Drive new business growth and customer success by providing business expertise.
Required Qualifications:
• Graduated from University or equivalent.
• 5-7+ years of relevant experience in software development.
• Must have hands-on expertise in the following technologies: Java/J2EE, Spring framework, Hibernate, Web Service (SOAP and RESTful), database (Oracle, SQL, PL/SQL, stored procedures)
• Have good knowledge in web-based systems architecture, service-based architecture, enterprise application architecture.
• Ability to understand the business requirements and converting them into solution designs
• Have excellent English written and oral communication skills, including conducting presentations to customers.
Effort:
The estimated effort for the tendered prototyping project is low. We estimate it with 10 hours max, including documentation. In addition there should be 1 hour of Skype conference, where you present your solution via Skype.
Project:
Task 1: You set up a small OpenStack configuration on a virtual machine provided to you (RHEL on Xen).
The small OpenStack configuration is of your choice. Storage in this prototype is not necessary for user data. However, OpenStack identity will need to store user identification data.
The OpenStack environment has mandatorily to include
• The dashboard (simple configuration) to enable the cloud administrator to control his compute and networking resources.
• OpenStack Identity (from OpenStack Shared Services) enabling to create users and tenants and to define permissions for compute, storage and networking resources. It shall allow three users (user 1, 2and user 3) to read the output of sine wave software-as-a-service (see task 2). Exclusively user 3 shall also be able to define the input parameters. User 4 has no right to see, neither to input data. User names: user1, user2, user3, user4. Passwords: pass1, pass2, pass3, pass4.
Task 2: You virtualize one software program provided to you as a Web service
The software program, which we will provide to you is a little C++ program, reading the input parameters for amplitude and frequency and providing as output a simple sine wave.
Pls implement a low effort input GUI for the users entitled to input data (in the prototype it is only user 3). Just in case that you have designer capabilities, you can off course also provide nicely styled input GUI. In that case we would after submission of the result also discuss with you another job profile – the profile of a GUI designer.
Pls virtualize it as a Web service on OpenStack with a RESTful webAPI.
You can either provide a small purely text-based output GUI or provide a HTML5 Canvas GUI, simple, no framing coordinate system required. Users 1, 2, and 3 can see the output. User 3 does not have access to that GUI.
如果R脚本是通过JAVA启动的,外部参数要如何传到R中呢?
可以通过:
> Sys.setenv(R_TEST="testit")
> path <- Sys.getenv("R_TEST")
R_TEST
"testit"
> setwd($path)
一套S2SH的应用,现用单线程,连续发1000个请求,用的DBCP链接池,结果报数据库链接不够用:
ERROR [org.hibernate.util.JDBCExceptionReporter] - Cannot get a connection, pool error Timeout waiting for idle object
在JAVA加上LOG:
log.info("active: " + dataSource.getNumActive() + " (max: "
+ dataSource.getMaxActive() + ") " + "idle: " + dataSource.getNumIdle()
+ "(max: " + dataSource.getMaxIdle() + ")");
结果显示为:
active: 25 (max: 100) idle: 0(max: 30)
active的数量一直增加,但idle的数量一直为0。当程序向链接池要链接的时候,如果池没有,就会新建一个,active数就会加1,关闭链接后,链接会返回池,idle数加1。idle为0则表示池里没有链接。
这样说明链接一直在创建,没有关闭放回池里。但链接是由SPRING和HIBERNATE管理的,代码中没有关闭链接的语句。之后试了N多配置,都还没解决,如增加maxActive数等。最后,加上这一行,问题才终于解决:
<prop key="hibernate.connection.release_mode">after_transaction</prop>
这里默认值是auto,如果是用JTA事务才适用,如果是JDBC事务,就只能用after_transaction。
这样每次事务结束后,就会关闭链接返回链接池。