Professional Documents
Culture Documents
Source Code
Java Code:
File name: Trust_book.java
Function Performed:
Discovery of services corresponding to the functional requirement using UDDI4J
API’S
Evaluation of Trust level for each discovered service according to Fuzzy
Cognitive Approach.
Calculation of number of time of usage for each service by logged in user and
other user
Code:
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Properties;
import java.util.Vector;
import org.uddi4j.datatype.tmodel.TModel;
import org.uddi4j.UDDIException;
import org.uddi4j.client.UDDIProxy;
import org.uddi4j.datatype.Name;
import org.uddi4j.response.BusinessInfo;
import org.uddi4j.response.ServiceInfo;
import org.uddi4j.response.BusinessInfos;
import org.uddi4j.response.BusinessList;
import org.uddi4j.response.ServiceList;
import org.uddi4j.response.DispositionReport;
import org.uddi4j.response.Result;
import org.uddi4j.util.FindQualifier;
import org.uddi4j.util.FindQualifiers;
import org.uddi4j.response.TModelDetail;
import org.uddi4j.response.TModelInfo;
import org.uddi4j.response.TModelList;
import org.uddi4j.util.TModelBag;
import java.util.Properties;
import org.uddi4j.transport.TransportFactory;
import org.uddi4j.datatype.binding.TModelInstanceDetails;
import org.uddi4j.datatype.binding.TModelInstanceInfo;
import org.uddi4j.datatype.binding.AccessPoint;
import org.uddi4j.datatype.binding.BindingTemplate;
import org.uddi4j.response.BindingDetail;
import java.util.ArrayList;
public class Trust_book extends HttpServlet
{ static Connection con=null;
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{ String DRIVER = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/trust";
String user ="root";
String pwd ="root";
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String n=(String)session.getAttribute("name");
String uuid=(String)session.getAttribute("uuid");
ArrayList TrustList = new ArrayList();
try {
Class.forName(DRIVER); //driver is loaded
con = DriverManager.getConnection(URL,user,pwd);
Properties config =null;
config = Configurator.load();
UDDIProxy proxy = new UDDIProxy();
proxy.setInquiryURL(config.getProperty("inquiryURL"));
proxy.setPublishURL(config.getProperty("publishURL"));
Vector names = new Vector();
names.add(new Name("b"));
FindQualifiers findQualifiers = new FindQualifiers();
Vector qualifier = new Vector();
qualifier.add(new FindQualifier("caseSensitiveMatch"));
findQualifiers.setFindQualifierVector(qualifier);
String stream=request.getParameter("category");
TModelList tModelList = proxy.find_tModel(stream, null, null,null,5);
Vector tModelInfoVector = tModelList.getTModelInfos().getTModelInfoVector();
TModelInfo tModelInfo = (TModelInfo)tModelInfoVector.elementAt(0);
System.out.println("The TModel Name: " + tModelInfo.getNameString());
String tmodelKey = tModelInfo.getTModelKey();
System.out.println("The TModel Key : " + tmodelKey);
TModelBag tModelBag = new TModelBag();
Vector tModelKeyVector = new Vector();
tModelKeyVector.add(tmodelKey);
tModelBag.setTModelKeyStrings(tModelKeyVector);
BusinessList businessList = proxy.find_business(null, null, null, null, tModelBag,
findQualifiers, 5);
Vector businessInfoVector =
businessList.getBusinessInfos().getBusinessInfoVector();
for( int i = 0; i < businessInfoVector.size(); i++ )
BusinessInfo businessInfo = (BusinessInfo)businessInfoVector.elementAt(i);
ServiceList serv_list=proxy.find_service(null, tModelBag, findQualifiers, 10);
Vector serviceinfoVector=serv_list.getServiceInfos().getServiceInfoVector();
ArrayList Serv_name=new ArrayList();
ArrayList ap=new ArrayList();
for( int i = 0; i < serviceinfoVector.size(); i++ )
{ ServiceInfo serviceInfo = (ServiceInfo)serviceinfoVector.elementAt(i);
String sn=(String)serviceInfo.getDefaultNameString();
String sk=serviceInfo.getServiceKey();
System.out.print(serviceInfo.getDefaultNameString()+" \t");
BindingDetail bindingDetailReturned = proxy.find_binding(null, sk, null, 10);
Vector bindingTemplatesFound =
bindingDetailReturned.getBindingTemplateVector();
BindingTemplate bindingTemplateFound = (BindingTemplate)
(bindingTemplatesFound.elementAt(0));
String bk=(String)bindingTemplateFound.getBindingKey();
String a_pnt=bindingTemplateFound.getAccessPoint().getText();
Serv_name.add(sn);
ap.add(a_pnt);
}
//Calculate count
System.out.println(1);
String sname[]=new String[Serv_name.size()];
String uTimes[]=new String[sname.length];
String oTimes[]=new String[sname.length];
System.out.println(2);
for (int i=0;i<sname.length;i++)
{
System.out.println(3);
sname[i]=(String)Serv_name.get(i);
String qry="select count from UserServiceLog where uuid='"+uuid+"'
and ServiceName='"+sname[i]+"'" ;
PreparedStatement pst=con.prepareStatement(qry);
ResultSet rs=pst.executeQuery();
if(rs.next())
uTimes[i]=rs.getString("count");
//System.out.println(rs.getString("count"));
rs.close();
pst.close();
System.out.println(4);
String qry1="select sum(count) from UserServiceLog where uuid != '
"+uuid+"' and ServiceName= '"+sname[i]+"'" ;
PreparedStatement pst1=con.prepareStatement(qry1);
System.out.println(5);
ResultSet rs1=pst1.executeQuery();
System.out.println(6);
if(rs1.next())
{System.out.println(7);
oTimes[i]=rs1.getString("sum(count)");
System.out.println(8);
//System.out.println(rs.getString("sum(count)"));
}
rs1.close();
pst1.close();
System.out.println(5);
}
request.getRequestDispatcher("/project/ShowTrust.jsp").forward(request,response);
}
// Handle possible errors
catch( UDDIException E )
{
DispositionReport dr = E.getDispositionReport();
if( dr!=null )
{
System.out.println("UDDIException faultCode:" + E.getFaultCode() +
catch( Exception E )
{
E.printStackTrace();
}
finally{
try{
if (con!=null && con.isClosed())
con.close();
}
catch (SQLException z)
{
z.printStackTrace();
}
}
}
public static double fuzzyTrust(String uuid,String service)
{
/* these influence values are taken from user's influence repository*/
double QoC_influence=0,
QoE_influence=0,
availability_Influence=0,
competence_Influence=0,
promptness_Influence=0,
cost_Influence=0;
/* these are the trust parameter feedbacks taken from feedback repository*/
double QoE_availability=0,
QoE_competence=0,
QoE_promptness=0,
QoE_cost=0;
//con=getConnection();
//Statement statement=null;
try
{
PreparedStatement pst=con.prepareStatement("select
cost,availablity,competance,promptness,qoe,qoc from influence where
uuid=?");
pst.setString(1,uuid);
ResultSet rs=pst.executeQuery();
if(rs.next())
{
promptness_Influence=rs.getDouble("promptness");
cost_Influence=rs.getDouble("cost");
availability_Influence=rs.getDouble("availablity");
competence_Influence=rs.getDouble("competance");
QoC_influence=rs.getDouble("qoc");
QoE_influence=rs.getDouble("qoe");
}
PreparedStatement pst2=con.prepareStatement("select
cost,availablity,promtness,competance from feedback where uuid=?
and SeriveName=?");
pst2.setString(1,uuid);
pst2.setString(2,service);
ResultSet rs2=pst2.executeQuery();
if(rs2.next())
{
QoE_promptness=rs2.getDouble("promtness");
QoE_cost=rs2.getDouble("cost");
QoE_availability=rs2.getDouble("availablity");
QoE_competence=rs2.getDouble("competance");
}
PreparedStatement pst3=con.prepareStatement("select
avg(availablity)\"avga\",avg(competance)\"avgcom\",avg(promtness)\"
avgp\",avg(cost)\"avgc\" from feedback where not uuid=? and
SeriveName=?");
pst3.setString(1,uuid);
pst3.setString(2,service);
ResultSet rs3=pst3.executeQuery();
if(rs3.next())
{
QoC_promptness=rs3.getDouble("avgp");
QoC_cost=rs3.getDouble("avgc");
QoC_availability=rs3.getDouble("avga");
QoC_competence=rs3.getDouble("avgcom");
}
System.out.println("QoE_availability:"+QoE_availability+"
QoE_competence:"+QoE_competence+"
QoE_promptness:"+QoE_promptness+"
+QoE_cost:"+QoE_cost+"\n");
System.out.println("QoC_availability:"+QoC_availability+"
QoC_competence:"+QoC_competence+"
QoC_promptness:"+QoC_promptness+"
+QoC_cost:"+QoC_cost+"\n\n");
availability_level=evaluateInfluence(QoC_availability,QoE_availabilit
y,QoC_influence,QoE_influence,availability_level);
System.out.println("availability_level:"+availability_level+"\n.................................................
.......\n");
competence_level=evaluateInfluence(QoC_competence,QoE_competence,QoC_influence,Q
oE_influence,competence_level);
System.out.println("competence_level:"+competence_level+"\n...............................................
.........\n");
promptness_level=evaluateInfluence(QoC_promptness,QoE_promptness,QoC_influence,Qo
E_influence,promptness_level);
System.out.println("promptness_level:"+promptness_level+"\n................................................
........\n");
cost_level=evaluateInfluence(QoC_cost,QoE_cost,QoC_influence,QoE_influence,cost_level
);
System.out.println("cost_level:"+cost_level+"\n........................................................\n");
trust_level=evaluateTrustLevel(availability_level,competence_level,promptness_level,cost_l
evel,availability_Influence,competence_Influence,promptness_Influence,cost_Influence);
System.out.println(trust_level+"\n........................................................\n");
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
try
{
if (con!=null && con.isClosed())
con.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return trust_level;
}
public static double evaluateInfluence(double QoC_param,double
QoE_param, double QoC_influence, double QoE_influence, double old_level)
{
int counter=0;
int max_loop=100;
double new_level=old_level;
do
{
old_level=new_level;
new_level=(
(
(old_level+(QoE_param-old_level)*(QoE_influence/100))
+ (old_level+(QoC_param-old_level)*(QoC_influence/100))
)/2
);
if(new_level<0)
{
new_level=0;
}
counter++;
System.out.println(counter+" new_level:"+new_level+"
old_level:"+old_level);
}while(counter < max_loop && new_level!=old_level);
return new_level;
}
public static double evaluateTrustLevel(double availability_level,double
competence_level,double promptness_level,double cost_level,double
availability_Influence,double competence_Influence,double
promptness_Influence,double cost_Influence)
{
int counter=0;
int max_loop=100;
double new_level=0,old_level=0;
do
{
old_level=new_level;
new_level=(
(
(old_level+(availability_level-old_level)*(availability_Influence/100))
+(old_level+(competence_level-old_level)*(competence_Influence/100))
+(old_level+(promptness_level-old_level)*(promptness_Influence/100))
+(old_level+(cost_level-old_level)*(cost_Influence/100)))/4);
if(new_level<0)
{
//System.out.println("\n***********new_level="+new_level+"
****************\n");
new_level=0;
}
counter++;
System.out.println(counter+" new_level:"+new_level+"
old_level:"+old_level);
}while(counter < max_loop && new_level!=old_level);
return new_level;
}
}
class Configurator {
public static Properties load() {
Properties config = new Properties();
try {
config.load(new java.io.FileInputStream("samples.prop"));
} catch (Exception e) {
System.out.println("Error loading samples property file\n" + e);
}
// Configure UDDI4J system properties. Normally set on commandline or elsewhere
// SOAP transport being used
if (System.getProperty(TransportFactory.PROPERTY_NAME)==null) {
System.setProperty(TransportFactory.PROPERTY_NAME,
config.getProperty("TransportClassName"));
}
// Logging
if (System.getProperty("org.uddi4j.logEnabled")==null) {
System.setProperty("org.uddi4j.logEnabled", config.getProperty("logEnabled"));
}
// Configure JSSE support
try {
System.setProperty("java.protocol.handler.pkgs",
config.getProperty("handlerPackageName"));
// Dynamically loads security provider based on properties. Typically configured in
JRE
java.security.Security.addProvider((java.security.Provider)
Class.forName(config.getProperty("securityClassName")).newInstance());
} catch (Exception e) {
System.out.println("Error configuring JSSE provider. Make sure JSSE is in
classpath.\n" + e);
}
return config;
}
}
if(rs.next()){
qry="update userservicelog set Count=Count+1 where uuid='"+uuid+"' AND
ServiceName='"+BookStoreName+"'";
System.out.println(qry);
PreparedStatement pst1=con.prepareStatement(qry);
int a=pst1.executeUpdate();
System.out.println("updated count in userservicelog");
pst1.close();
}
else{
qry="insert into UserServiceLog values
('"+uuid+"','"+BookStoreName+"',1)" ;
System.out.println(qry);
PreparedStatement pst2=con.prepareStatement(qry);
int a=pst2.executeUpdate();
System.out.println("new record inserted ");
//rs1.close();
pst2.close();
}
}
catch (ClassNotFoundException z)
{
out.println("driver not found");
}
catch (SQLException z)
{
z.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
bookList=bookList+rs.getString(1)+","+rs.getString(2)+","+rs.getString(3)+","+rs.getString(
4)+","+rs.getString(6)+","+rs.getString(5)+";";
}
bookList=count+":"+bookList;
System.out.println("************** "+bookList);
}
catch (SQLException e){
e.printStackTrace();
}
finally{
try {
if (con!=null && con.isClosed())
con.close();
}
catch (SQLException e){
e.printStackTrace();
}
}
return bookList;
}