2011-10-20 20 views
9

Tôi đang chạy CORBA dai dẳng thực hiện Object trong Java IDLJava IDL: servertool không đăng ký và treo

như trong Java IDL: The "Hello World" Example

Tôi đi theo thủ tục chính xác trong ở trên bài viết

tôi đã sử dụng servertool đăng ký dai dẳng máy chủ như được hiển thị trong ví dụ. nhưng khi tôi đã cố gắng để đăng ký máy chủ sử dụng cú pháp như trong bài viết rằng:

servertool > register -server PersistentServer -applicationName s1 -classpath path_to_server_class_files

tôi bị treo và doesnt làm bất cứ điều, sau đó tôi phải làm ctrl+c để sao lưu sang chế độ bình thường

những gì có thể sai với điều này?

+0

Tôi đang trải qua cùng một vấn đề. Tôi tải xuống ví dụ ở đây từ http://download.java.net/jdk7/archive/b123/docs/technotes/guides/idl/PersistentHello.zip và bắt đầu làm theo các bước từ readme.txt tại Bước 5b Tôi có vấn đề. Cụ thể hơn, nếu tôi chạy "register -server PersistentServer -applicationName s1 -classpath." trong servertool conncted tại cổng ORB 1050 tôi nhận được một lỗi nói "Bad server definition: class chính không tìm thấy." – bitek

+0

Tôi bắt đầu ORBD như là một quá trình nền có orb.db trong cùng thư mục với thư mục PersistentHello; và tôi bắt đầu servertool từ thư mục PersistentHello nơi lớp PersistentServer là. Nếu bạn tìm kiếm chuỗi tìm kiếm "Định nghĩa máy chủ không hợp lệ: không tìm thấy lớp chính", bạn sẽ thấy 2-3 báo cáo lỗi từ vài năm trước. Tôi có một số ý tưởng để thử nếu một cái gì đó hoạt động tôi sẽ cho bạn biết. – bitek

+0

@AlexButum Cảm ơn bạn đã xem xét nhưng cuối cùng tôi tìm thấy câu trả lời của tôi tại http://www.cse.ohio-state.edu/~gurari/course/cis888w04/cis888w04su52.html#x76-590007.6 – mojtaba

Trả lời

1

Vấn đề là đường dẫn cài đặt Java JDK của bạn chứa khoảng trắng.

Nếu JDK của bạn được cài đặt vào đường dẫn có dấu cách, ví dụ "C: \ Program Files \ Java \ jdk1.7.0" thì bạn phải khởi động orbd và servertool bằng đường dẫn tuyệt đối của chúng (trong Windows bạn phải sử dụng ngắn ký hiệu tay tức là với ~ [Tilda]):

C: \ Progra ~ 1 \ Java \ jdk1.7.0 \ bin \ orbd -ORBInitialPort 1050 -serverPollingTime 200

C: \ Progra ~ 1 \ Java \ jdk1 .7.0 \ bin \ servertool -ORBInitialPort 1050

servertool> register -server PersistentServer -applicationName MyApp -classpath. (Điều chỉnh classpath khi cần thiết cho các tập tin được tạo ra bởi idlj)

Trong Windows bạn có thể tìm thấy con đường tên viết tắt sử dụng: dir *.* /x

Trong trường hợp bạn sử dụng một biến môi trường như% JAVA_HOME% tương đương với "C: \ Program Files \ Java \ jdk1.7.0 "và sau đó bạn gắn nó vào PATH nó sẽ NOT hoạt động, bạn phải sử dụng ký hiệu ngắn tay (với tilda) tức là" C: \ Progra ~ 1 \ Java \ jdk1.7.0 "

GỢI Ý: Nếu JDK của bạn được cài đặt trong đường dẫn không có dấu cách, ví dụ: C: \ Java \ jdk1.7.0 thì bạn có thể tart orbd và servertool mà không sử dụng đường dẫn tuyệt đối và nó sẽ hoạt động.

+0

Phiên bản JDK bạn đang sử dụng cho điều này? – ajduke

+0

Mới nhất của Oracle JDK 7 trên Windows XP SP3 32 bit và OpenJDK 1.7.0_147 trên hệ thống Linux (Kubuntu 64bit). Đọc các nhận xét từ [bài đăng này] (http://stackoverflow.com/questions/1947864/corba-javas-servertool-does-not-allow-me-to-register-a-server-class/1995029#1995029) – bitek

0

xin vui lòng đọc Running CORBA Applications cho mô tả đầy đủ

Tạo stub Java và các lớp xương bằng cách biên dịch file IDL với lệnh ‘idlj’.

idlj -fall IDLfile.idl 

Biên dịch file nguồn

javac IDLserver.java 
javac IDLclient.java 
or 

javac javac *.java IDLmodule/*.java 

Bắt đầu Object Request Broker (ORB) daemon

unix: orbd -ORBInitialPort 4321 & 
windows: start orbd -ORBInitialPort 4321 

Trên unix, lệnh 'ps -e' cho thấy số lượng quá trình giao orbd. Lệnh kill có thể được sử dụng để giết quá trình.

Trong khi chạy, trình nền ghi các thư trong thư mục con orb.db. Gọi server unix: java IDLserver -ORBInitialHost localhost -ORBInitialPort 4321 & cửa sổ: start java IDLserver -ORBInitialHost localhost -ORBInitialPort 4321 Gọi client

cổng ban đầu
java IDLclient -ORBInitialHost localhost -ORBInitialPort 4321 

Các ORB mặc định là cổng 900 (chỉ có một root có thể khởi động nó trên solaris).

+0

"(chỉ có một root có thể khởi động nó trên Solaris)". Trên thực tế không có !. Trên thực tế, Solaris khác với Windows và Linux vì nó có đặc quyền 'net_privaddr' mà bạn có thể gán cho người dùng, một tiến trình, một thực thi hoặc một dịch vụ. An toàn hơn nhiều. – peterh

Các vấn đề liên quan