Witam wszystkich. Mam taki proble. [???] Na zajecia musze napisac program client/server w java w XML-RPC. Kody programu sie kompliluja bez problemow, natomiast gdy uruchamiam program nie dziala tak jak powinien.. Czesto sie zawiesza.. :/ Client jest w GUI, natomiast Server korzysta z konsoli. Spedzilem sporo czasu nad tym i nic nie moge wymyslic.. [glowa] Ponizej dolanczam kody obu programow. Jesli ktos moglby mi pomoc i poprawic kody bylbym ogromnie wdzieczny..
Kontakt rowniez na gg: 2141466
Z gory dzieki za pomoc.
Kod clienta:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.apache.xmlrpc.*;
import java.util.Vector;
import java.io.*;
import java.util.*;
public class ClientXML extends JFrame
{
//Variables declaration
String getInfo="";
String key;
private JTextArea consolArea;
private JScrollPane jScrollPane1;
private JButton logIn;
private JButton getOffer;
private JButton makeOrder;
private JButton sendFeedback;
private JButton logOut;
private JPanel contentPane;
//End of variables declaration
public ClientXML()
{
super();
initializeComponent();
this.setVisible(true);
}
private void initializeComponent()
{
consolArea = new JTextArea(getInfo);
jScrollPane1 = new JScrollPane();
logIn = new JButton();
getOffer = new JButton();
makeOrder = new JButton();
sendFeedback = new JButton();
logOut = new JButton();
contentPane = (JPanel)this.getContentPane();
//
// consolArea- JTextArea
//
consolArea.setText("");
//
// jScrollPane1
//
jScrollPane1.setViewportView(consolArea);
//
// logIn button
//
logIn.setText("Log in");
logIn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
logIn_actionPerformed(e);
}
});
//
// getOffer button
//
getOffer.setText("Get offer");
getOffer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
getOffer_actionPerformed(e);
}
});
//
// makeOrder button
//
makeOrder.setText("Make order");
makeOrder.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
makeOrder_actionPerformed(e);
}
});
//
// sendFeedback button
//
sendFeedback.setText("Send feedback");
sendFeedback.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
sendFeedback_actionPerformed(e);
}
});
//
// logOut button
//
logOut.setText("Log out");
logOut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
logOut_actionPerformed(e);
}
});
//
// contentPane
//
contentPane.setLayout(null);
addComponent(contentPane, jScrollPane1, 149,15,218,233);
addComponent(contentPane, logIn, 14,15,113,28);
addComponent(contentPane, getOffer, 15,62,111,28);
addComponent(contentPane, makeOrder, 18,109,109,28);
addComponent(contentPane, sendFeedback, 18,153,108,28);
addComponent(contentPane, logOut, 18,199,107,28);
//
// ClientXML
//
this.setTitle("ClientXML");
this.setLocation(new Point(0, 0));
this.setSize(new Dimension(390, 300));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void addComponent(Container container,Component c,int x,int y,int width,int height)
{
c.setBounds(x,y,width,height);
container.add(c);
}
//
//By pressing "Log in" button it can be connected into the server.
//
private void logIn_actionPerformed(ActionEvent e)
{
try
{
XmlRpcClient server = new XmlRpcClient("http://localhost/RPC2");
String password;
password = JOptionPane.showInputDialog(null,"Please enter password:");
Vector params1 = new Vector();
params1.add(password);
String key = (String) server.execute("factory.login", params1);
Object result = server.execute("factory.hello", new Vector() );
getInfo+=("/nServer status: " + result.toString());
consolArea.setText(getInfo);
}
catch (Exception ex)
{
getInfo+=("ChatClient: " + ex);
}
}
//
//By pressing "Get offer" button we'll get a list of available tools.
//
private void getOffer_actionPerformed(ActionEvent e)
{
try
{
XmlRpcClient server = new XmlRpcClient("http://localhost/RPC2");
String msg = "Hello, Can I get a list of available tools?";
String who = "Adrian's Wholesaler";
Vector params2 = new Vector();
params2.add(who);
params2.add(msg);
Object result1 = server.execute("factory.message", params2 );
getInfo+=(result1.toString());
Vector params3 = new Vector();
params3.add(key);
Vector result2 = (Vector) server.execute("factory.tools", params3 );
for( int i=0; i < result2.size(); i++ )
{
getInfo+=(""+i+": "+result2.get(i));
}
}
catch (Exception ex)
{
getInfo+=("ChatClient: " + ex);
}
}
//
// By pressing "Make order" button it can be made order
// and sent into the server.
//
private void makeOrder_actionPerformed(ActionEvent e)
{
try
{
XmlRpcClient server = new XmlRpcClient("http://localhost/RPC2");
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
String myOrder;
myOrder = JOptionPane.showInputDialog(null,"Please enter your order and a quantity:");
myOrder = br2.readLine();
String who2 = "Adrian's Wholesaler";
Vector params4 = new Vector();
params4.add(myOrder);
params4.add(who2);
Object result3 = server.execute("factory.order", params4);
Date result4 = (Date) server.execute("factory.getTimeOfOrder", new Vector());
getInfo+=("Your order will be ready to pick up: " + result4.toString());
}
catch (Exception ex)
{
getInfo+=("ChatClient: " + ex);
}
}
//
//By pressing "Send Feedback" button it can be sent Feedback
// into the server
//
private void sendFeedback_actionPerformed(ActionEvent e)
{
try
{
XmlRpcClient server = new XmlRpcClient("http://localhost/RPC2");
BufferedReader br3 = new BufferedReader(new InputStreamReader(System.in));
String feedB;
System.out.println("Please send your feedback to us:");
feedB = br3.readLine();
Vector params5 = new Vector();
params5.add(feedB);
Object result5 = server.execute("factory.feedback", params5);
}
catch (Exception ex)
{
getInfo+=("ChatClient: " + ex);
}
}
//
//By pressing "Log out" button it can be loged out from server
// and session will be ended.
//
private void logOut_actionPerformed(ActionEvent e)
{
try
{
XmlRpcClient server = new XmlRpcClient("http://localhost/RPC2");
Object result6 = server.execute("factory.endSession", new Vector() );
}
catch (Exception ex)
{
getInfo+=("ChatClient: " + ex);
}
}
//
//----------Main method----------
//
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
new ClientXML();
}
}
Kod Servera:
import org.apache.xmlrpc.*;
import java.util.*;
public class ServerXMLRPC
{
public String authentication = null;
public static WebServer server;
public String login(String password)
{
if( password.equals("gullible"))
{
authentication = Double.toString(Math.random());
return authentication;
}
else
{
endSession();
return "Wrong password!!!";
}
}
public String hello()
{
return "You're actually connected with Tools Garden Factory's Server...";
}
public String message (String who, String what)
{
System.out.println(who+" says: "+what);
return "Yes, We'll send you... This is our offer";
}
public String [] tools(String pass2)
{
if( pass2.equals(authentication) )
{
String [] myTools = { "spade", "rake", "lawn mower", "hoe", "pitchfork" };
return myTools;
}
else
{
String [] myFilling = { };
return myFilling;
}
}
public String order (String who2, String myOrder)
{
System.out.println(myOrder+" orders: "+who2);
return "We got already your list of order. Thank you.";
}
public Date getTimeOfOrder()
{
long timeNow = System.currentTimeMillis();
long tomorrow = timeNow + 1000 * 60 * 60 * 24;
return new Date (tomorrow);
}
public String feedback(String feedB)
{
System.out.println("Customer sent feedback: " + feedB);
return "Thank you for your cooperation with us!";
}
public String endSession()
{
System.out.println("Server was closed!");
server.shutdown();
return "You've been log out!";
}
public static void main (String [] args)
{
try
{
WebServer server = new WebServer(80);
server.addHandler ("factory", new ServerXMLRPC());
server.start();
System.out.println("Server is run now...");
}
catch (Exception ex)
{
System.err.println("There is a problem:" + ex);
}
}
}