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。
這樣每次事務結束后,就會關閉鏈接返回鏈接池。