Witam, analizuję przykład Warehouse dotyczący przekazywania parametrów zdalnym metodom i napotkałem następujący problem.
Po uruchomieniu WarehouseServer.java, rejestruję rmiregistry & i serwer się odpala tu problemu nie ma ( I hope :) )
Problem mam z klientem WarehouseClient.java tz. odpalam klienta zaznaczam odpowiednie pola wyboru naciskam Akceptuj i rzuca mi wyjątek.
Odnoszę wrażenie iż nie następuje komunikacja poprzez interface Warehouse.. :(
Jeśli ktoś miał podobny problem lub podpowie mi jak to ugryźć to będę wdzięczny...
Z góry dziękuję za okazaną pomoc.
wycinek programu:
private void callWarehouse()
{
try
{
ArrayList<String> selected = new ArrayList<String>();
for (JCheckBox checkBox : hobbies)
if (checkBox.isSelected()) selected.add(checkBox.getText());
Customer c = new Customer(Integer.parseInt(age.getText()),
(male.isSelected() ? Product.MALE : 0)
+ (female.isSelected() ? Product.FEMALE : 0),
selected.toArray(new String[selected.size()]));
System.out.println(c);
ArrayList<Product> recommendations= warehouse.find(c);
result.setText(c + "\n");
for (Product p : recommendations)
{
String t = p.getDescription() + "\n";
result.append(t);
}
}
catch (Exception e)
{
e.printStackTrace();
result.setText("Exception: " + e);
}
}
java.lang.NullPointerException
at warehouse.WarehouseClientFrame.callWarehouse(WarehouseClient.java:131)
at warehouse.WarehouseClientFrame.access$000(WarehouseClient.java:56)
at warehouse.WarehouseClientFrame$1.actionPerformed(WarehouseClient.java:100)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)